1. 封装的引入

  1. 当我们创建一个类的对象以后,我们可以通过“对象 . 属性”的方式,对对象进行赋值。这里,赋值操作要受道属性的数据类型和存储范围的制约,除此之外,没有任何制约。但是,在业务问题中,需要给属性的赋值加入额外的限制条件。但这个限制在属性声明时是做不到的,只能通过类内方法来设置限制。因此,在更改某一个属性时,基本不会使用 对象.属性 来赋值。比如,将属性设置为 private,在声明一个 public set 方法用于外界更改属性。此时,针对属性就体现出了封装性

2. 封装的体现

在实现一个类时,公共的数据非常危险,破坏这些数据的捣乱者可能出现在任何地方,放项目工程量大的时候,会很难调试,因此应该将所有的属性都设置为私有的。
当属性设置为私有后,其他类就无妨访问该属性,甚至连读都不行,这显然是不符合业务逻辑的。因此,若想获得或者设置某个对象的属性并且保证安全性,一般需要提供以下三项内容:

  • 一个私有的属性
  • 一个公共的属性访问器方法
  • 一个公共的属性更改器方法

也即:将属性私有化(private),同时提供公共(public)的方法来读取(getXxx)属性和 设置(setXxx)属性

class Person {
    // 属性
    private String name;
    private int age;
    // 获取name
    public String getName(){
        return name;
    }
    // 设置age
    public void setAge(int d){
        if (d >= 0){
            age = d ;
        }
    }
}