Java中的公共内部类与私有内部类

14

我正在阅读Java编程入门,但它没有对这个话题进行很好的解释,这让我想知道为什么在Java中应该使用私有内部类而不是公共内部类。

它们都只能被外部类使用。


1
把它看作类的成员。为什么要将成员设置为私有? - stinepike
你会使用公共成员和私有成员的原因是一样的。 - arshajii
嵌套类教程。Nested Classes - mre
@StinePike 否定访问另一个类。@arshajii 我以为它还有更多内容。 - Lind
面向对象设计原则:最小化可见性。 - zapl
1个回答

34

你的说法 它们只能被外部类使用 是错误的:

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修饰符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接