有人可以向我解释保护/公共内部类之间的区别是什么?
我知道公共内部课程要尽可能的避免(像这个article中解释的).
但是从我可以看出,使用保护或公共修饰符没有区别.
看看这个例子:
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保护或公开.
我失踪了什么请指出我使用受保护或公开的情况.
谢谢.