封装及其必要性
- 封装隐藏了内部细节,只暴露接口
封装的好处就是隐藏具体实现细节,对使用者来说接口不变即可,很方便。
声明如下的类:
public class Person{
public Integer age;
public Integer id;
public String name;
}
这个类被其他很多地方调用,可是后期要对其中的变量进行一下处理,如对id进行格式限制,就变得很不方便。做如下改变:
public class Person{
private Integer age;
private Integer id;
private String name; // 改成private使得不能不能从类外部直接访问。
public void setId(Int id){ // 暴露接口来处理
if(id){
...
} else {
...
}
}
}
访问控制符
控制符
- public 任何生成了对应实体的地方都可以通过点操作符访问。
- ptotected 只有子类(extends)和同一个包下的类可以访问。
- package private 包级私有。只有同一个包下的可以访问。无任何访问控制符时默认就是包级私有。
- private 只有当前类可以使用。
包是没有包含嵌套关系的。
JavaBean的约定(应用广泛)
- getter 得到一个属性的方法
- setter 设置一个属性的方法
非布尔值:
getter: get + 属性首字母大写
setter: set + 属性首字母大写
布尔值:
getter: is + 属性首字母大写
setter: set + 属性首字母大写
在使用fastjson时发现他读取的值都是通过getter得到的。
类的访问控制符
- 包级私有
class Cat{}
即同一个包内可以访问到,包外访问不到。
2. public 任何地方都可以当问到。
3. package private同一个包的类可以访问到。
4. private 只能在同一个类中访问。