有人能否解释一下 protected
/ public
内部类之间的区别?
我知道尽可能避免使用 public
内部类(如在这篇文章中所述)。
但据我所知,使用 protected
或 public
修饰符之间没有区别。
看看这个例子:
public class Foo1 {
public Foo1() { }
protected class InnerFoo {
public InnerFoo() {
super();
}
}
}
...
public class Foo2 extends Foo1 {
public Foo2() {
Foo1.InnerFoo innerFoo = new Foo1.InnerFoo();
}
}
...
public class Bar {
public Bar() {
Foo1 foo1 = new Foo1();
Foo1.InnerFoo innerFoo1 = foo1.new InnerFoo();
Foo2 foo2 = new Foo2();
Foo2.InnerFoo innerFoo2 = foo2.new InnerFoo();
}
}
无论我将InnerFoo
声明为protected
还是public
,所有这些都可以编译并且是有效的。
我错过了什么?请告诉我在使用protected
或public
时有区别的情况。
谢谢。