有人可以向我解释保护/公共内部类之间的区别是什么?
我知道公共内部课程要尽可能的避免(像这个@L_404_0@中解释的).
但是从我可以看出,使用保护或公共修饰符没有区别.
看看这个例子:
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页可能是感兴趣的.