面向对象三大特征封装

什么是封装

将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。方法,关键字private等等都是封装的一种体现形式。

关键字private

  • private是权限修饰符,被他修饰的成员变量,只能在本类中访问。但是超出了本类的范围之外就不能直接访问了。
  • 我们要操作private修饰的成员变量,就需要定义一对GetXxx和SetXxx方法了。
  • 对于GetXxx方法来说,不能有参数,返回值类型和成员变量对应
  • 对于SetXxx方法来说,不能有返回值,参数类型和成员变量对应
  • 基本类型boolean,获取值的方法,不能叫GetXxx。应该叫isXxx

this关键字的作用:

this代表所在类的当前对象的引用(地址值),即对象自己的引用。谁在调用,this就代表谁

  • 调用本类中的成员变量,格式是this.成员变量名
  • 调用本类中的成员方法,格式是this.成员方法名
  • 调用本类中的其他构造方法,注意:必须在构造方法中使用,而且必须位于构造方法中的第一行。不能和super同时存在

构造方法

当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值

构造方法定义格式:

修饰符 构造方法名(参数列表){

  //方法体

}

注意事项:

  • 构造方法名必须和所在的类名,一模一样
  • 构造方法没有返回值类型,连void 都不能写
  • 自己没有定义构造方法的时候,系统就会帮我们添加一个。一旦自己定义了构造方法,java自动提供的默认无参数的构造方法就不在添加
  • 建议构造方法自己给出,构造方法可以重载
  • 构造方法不能return一个具体的返回值
public class PrivateTest {
    public static void main(String[] args) {
        /*
        * 根据 new ClassBase();小括号里的是否传递参数,系统调用相应的构造方法
        * 执行无参数构造方法,this(18,true);
        * 调用本类中参数对应的构造方法,给对象属性赋予初值。age为18,male 为true
        *  创建对象,并且把内存地址赋值给c。
        *
        * */
        ClassBase c = new ClassBase();
        System.out.println(c.GetAge());//获取age属性值,结果为18
        System.out.println(c.isMale());//获取name 属性值结果 true
        c.run();


    }
}


class ClassBase {
    // 私有化属性
    private int age;
    private boolean male;

    //默认无参数的构造方法
    public ClassBase() {
        // 调用有参数的构造方法
        this(18, true);

    }

    // 有参数的构造方法
    public ClassBase(int age, boolean male) {
        this.age = age;
        this.male = male;
    }

    // 对外提供访问属性的方法
    public boolean isMale() {
        return male;
    }

    // 对外提供设置变量属性的方法
    public void setMale(boolean male) {
        // this.nale 就代表左边的male是成员变量
        this.male = male;
    }

    // 对外提供设置变量属性的方法
    public void SetAge(int age) {
        this.age = age;

    }

    // 对外提供访问属性的方法
    public int GetAge() {
        return this.age;
    }

    public void run() {

        // this调用本类中的其他成员方法
        System.out.println(this.isMale());//true
    }
}

一个标准的类通常情况有下面几个部分

  1. 所有的成员变量都要使用private关键字修饰
  2. 为每一个成员变量编写一对GetXxx和SetXxx方法
  3. 编写一个无参数的构造方法
  4. 编写一个全参数的构造方法
  5. 相应的功能的方法

猜你喜欢

转载自www.cnblogs.com/wurengen/p/10505220.html