沉寂了将近一年后,决定重新理解Java,刚开始就遇到这个以前忽略的问题。简单写一下自己的想法:
首先,Java中类的存在的意义就是要被其它类调用。
外部类:
默认的修饰符(default)可以保证该外部类可被同一包的其它类使用。
public可以使该类在同一工程的任意位置(本包和其它包)中使用。
若声明为private,该类不能被任何其它类调用,则失去了在实际应用中的意义(一个文件的力量太有限了)。
关于protected,我们先来看一个图:
对于外部类,protected与default的区别就是在继承中子类是否能访问到父类的实例变量。default可以使同包的子类访问,protected可以使不同包的子类访问。
重点来了!!!protected声明的类在不同包中访问不到!!!
所以外部类声明为protected或default其实现的访问限制完全相同!
功能重复,这大概就是外部类不能声明为protected的原因吧。