有人可以向我解释保护/公共内部类之间的区别是什么?
我知道公共内部课程要尽可能的避免(像这个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保护或公开.
我失踪了什么请指出我使用受保护或公开的情况.
谢谢.
解决方法
受保护的访问修饰符将限制来自同一个包及其子类中的类的访问.
在所示的示例中,公共和受保护的将具有与在同一个包中相同的效果.
有关访问修改器的更多信息,The Java Tutorials Controlling Access to Members of a Class页可能是感兴趣的.