【问题标题】:Public vs Private inner classes in JavaJava中的公共与私有内部类
【发布时间】:2014-01-01 13:22:11
【问题描述】:

我正在阅读 Java 编程简介,它没有关于这个主题的很好的解释,这让我想知道为什么有人应该在 java 中使用私有内部类而不是使用公共内部类。

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

【问题讨论】:

  • 认为它是班级的一员。为什么要将成员设为私有?
  • 使用公共成员和私人成员的原因相同。
  • Nested Classes 教程。
  • @StinePike 否定访问另一个类。@arshajii 我认为它还有更多内容。
  • OO设计原则:最小化可见度。

标签: java inner-classes access-specifier


【解决方案1】:

您的声明They both can be used only by the outer class. 是错误的:

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

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 2016-07-31
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多