受保护的/公共内部类
问题内容:
有人可以给我解释一下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
。
谢谢。
问题答案:
该protected
访问修饰符将限制从比在同一个包及其子类之外的其他类的访问。
在所示的示例中,public
和和protected
将具有相同的效果,因为它们位于同一包中。
有关访问修饰符的更多信息,可能需要关注Java教程的“
控制对类成员的访问”页面。