什么是封装
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。方法,关键字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 } }
一个标准的类通常情况有下面几个部分
- 所有的成员变量都要使用private关键字修饰
- 为每一个成员变量编写一对GetXxx和SetXxx方法
- 编写一个无参数的构造方法
- 编写一个全参数的构造方法
- 相应的功能的方法