我正在阅读Java编程入门,但它没有对这个话题进行很好的解释,这让我想知道为什么在Java中应该使用私有内部类而不是公共内部类。
它们都只能被外部类使用。
我正在阅读Java编程入门,但它没有对这个话题进行很好的解释,这让我想知道为什么在Java中应该使用私有内部类而不是公共内部类。
它们都只能被外部类使用。
你的说法 它们只能被外部类使用
是错误的:
public class A {
private class B {}
public class C {}
public C getC() {
return new C();
}
public B getB() {
return new B();
}
}
public class Tryout {
public static void main(String[] args) {
A a = new A();
A.B b = a.getB(); //cannot compile
A.C c = a.getC(); //compiles perfectly
}
}
请注意,您实际上可以在另一个类中拥有 A.C
的实例,并将其称为 C
(包括其所有公共声明),但对于 A.B
则不行。
从这个可以理解,您应该像通常使用修饰符一样对内部类使用private/public修饰符。