| 同类 | 包 | 子类 | 其他包 |
Public | ∨ | ∨ | ∨ | ∨ |
Protected | ∨ | ∨ | ∨ | × |
默认修饰符 | ∨ | ∨ | × | × |
Private | ∨ | × | × | × |
public修饰的作用域最大,都可以访问。Private作用域最小,只能在本类中访问,没有什么可以说的。但是我今天说的主要是protected和默认修饰符。下面是主要的我总结的几点,大家需要注意:
一、该成员为protected修饰时,他的权限比默认的修饰符要大,所以在包类都可以访问。但是值得注意的是,在包外中,只有子类对象可以访问父类的protected修饰的成员,父类对象却不可以,这个就是最大的差别,大家一定要注意。
二、该成员为默认修饰符时,在包类中,不过是子类对象还是父类对象,都可以访问此成员。下面就是在同一个包中进行测试,当然他们不是继承关系也可以啊
三、默认修饰符根本不是default或者friendly关键字,没有修饰符修饰它
四、大家记住这些顺序的时候,可以通过作用域范围和打钩的多少来记忆
五、面向对象的三大特性之一,封装性,修饰符有很好的体现。但是需要注意的一点,对于private修饰的成员,虽然子类不能修改该属性的值,但是子类的内存空间中还是有父类私有成员的一个副本。可以通过get、set方法来修改它,这也正是面向对象封装性不好的地方。