7. 封装与访问控制

265 阅读1分钟

封装及其必要性

  1. 封装隐藏了内部细节,只暴露接口 封装的好处就是隐藏具体实现细节,对使用者来说接口不变即可,很方便。
    声明如下的类:
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 {
            ...
        }
    }
}

访问控制符

控制符

  1. public 任何生成了对应实体的地方都可以通过点操作符访问。
  2. ptotected 只有子类(extends)和同一个包下的类可以访问。
  3. package private 包级私有。只有同一个包下的可以访问。无任何访问控制符时默认就是包级私有。
  4. private 只有当前类可以使用。

包是没有包含嵌套关系的。

JavaBean的约定(应用广泛)

  1. getter 得到一个属性的方法
  2. setter 设置一个属性的方法
    非布尔值:
    getter: get + 属性首字母大写
    setter: set + 属性首字母大写
    布尔值:
    getter: is + 属性首字母大写
    setter: set + 属性首字母大写
    在使用fastjson时发现他读取的值都是通过getter得到的。

类的访问控制符

  1. 包级私有
class Cat{}

即同一个包内可以访问到,包外访问不到。
2. public 任何地方都可以当问到。 3. package private同一个包的类可以访问到。 4. private 只能在同一个类中访问。