面向对象三大特征:封装、集成、多态
封装性在Java当中的体现:
- 方法就是一种封装
- 关键字private也是一种封装
封装就是将一些细节步骤信息隐藏封装起来,对于外界不可见。
关键字private的意思是私有化。
问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。
解决方案:用private关键字将需要保护的成员变量进行修饰。
一旦使用privete进行修饰,那么本类当中仍然可以随意访问。
但是!超出了本类范围之外就不能再直接访问了(可以间接访问)。
间接访问private成员变量,就是定义一堆Getter/Setter方法。
必须叫setXxx或者是getXxx,命名规则:
对于Getter来说,不能有参数,返回值类型和成员变量对应;
对于Seeter来说,不能有返回值,参数类型和成员变量对应。
package demo03; /* 问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。 解决方案:用private关键字将需要保护的成员变量进行修饰。 一旦使用privete进行修饰,那么本类当中仍然可以随意访问。 但是!超出了本类范围之外就不能再直接访问了。 */ public class Demo03Person { String name; private int age; public void show(){ System.out.println("我叫" + name + ",我今年" + age + "岁"); } // 这个成员方法,专门用于向age设置数据 public void setAge(int num){ if(num < 100 && num >= 9) { age = num; } else System.out.println("数据不合理!"); } // 这个成员方法,专门用于获取age的数据 public int getAge(){ return age; } }
package demo03; public class Demo03Person2 { public static void main(String[] args) { Demo03Person person = new Demo03Person(); person.show(); System.out.println("----------"); // person.age = 18; // 错误写法!不能直接访问private内容 person.setAge(-20); person.name = "易烊千玺"; person.show(); } }
注意:对于基本类型当中的boolean值,它的Getter方法一定要写出isXxx的形式,而setXxx格式不变。