是否需要在私有内部类中声明访问修饰符

时间:2016-06-19 11:46:54

标签: java private inner-classes access

我们说我有一个这样的课程:

public class OuterClass {
  //...
  private class InnerClass {
     private int x; // This variable makes sense
     public int y; // Is there any use for this?
  }
}

在上面的代码中,由于内部类是私有的,因此只有外部类可以访问其所有变量,甚至是私有变量。内部类本身对任何其他类都不可见,而是封闭的外部类。

所以即使上面的变量y是公共的,它也不能被外部类以外的任何其他类访问。

私有内部类中的所有访问修饰符似乎都是私有的,不是吗?

因此,有没有理由为内部类的任何成员声明访问修饰符?

1 个答案:

答案 0 :(得分:0)

访问修饰符可能重要的情况是覆盖超类方法的方法(例如toString())。您无法降低重写方法的可见性。必须始终将toString()声明为public才能使类编译。

当外部类访问私有成员时,编译器会创建一个合成方法。此合成方法仅在嵌套类的.class文件中可见。

当内部类本身不是私有时,访问修饰符范围很重要的另一种情况。