面向对象之封装与隐藏
- 高内聚,低耦合
高内聚——类的内部数据操作自己完成,不允许外部干涉
低耦合——仅对外暴露少量的方法用于使用 - 当我们创建一个对象后,可以通过“对象.属性”的方式,对对象的属性进行赋值,此时对属性的赋值仅受数值类型和存储空间的限制,但是这种限制强度太低,因此需要额外的方法,如setAttribute,来提高我们对属性的要求(不能在属性声明时体现),此外,我们还需要避免用户再次使用“对象.属性”的方式访问该属性,因此需要隐藏该属性,于是将default修改为更低的权限private,这样就保证了该属性不会对外暴露
- 虽然2中很好地隐藏了该属性,但是这就导致该属性其他相关方法可能无法正常运作,例如完全隐藏length后,我们只能通过setLength方法修改,而无法查看——a.length,于是需要另外定义其他方法,如getLength
- 2,3两点结合起来就是封装型的体现之一,我们既将属性隐藏(私有化),同时又提供了,公用的方法(public)来设置和获取该属性的值
- 封装型的体现需要权限修饰符的配合
- 四种权限修饰符:private,缺省,protected,public
- 4种权限修饰符能修饰类,以及类的内部结构:属性,方法,构造器,内部类
修饰符 | 本类 | 本包 | 不同包(子类) | 不同包(无关类) |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
default | √ | √ | ||
private | √ |
- 同时,修饰类只能使用public,default