访问包位置 | 类修饰符 | |||
private | default | protected | public | |
本类 | 可见 | 可见 | 可见 | 可见 |
同包其他类 | 不可见 | 可见 | 可见 | 可见 |
同包子类 | 不可见 | 可见 | 可见 | 可见 |
不同包子类 | 不可见 | 不可见 | 可见 | 可见 |
不同包的非子类 | 不可见 | 不可见 | 不可见 | 可见 |
1、对于顶层类(外部类)来说,只有两种修饰符:public和默认(default)。因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。
2、private可以修饰class的,只不过该类不能是顶层类,可以是内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。当一个内部类使用了private修饰后,只能在该类的外部类内部使用