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
or有区别的情况public
。
谢谢。