我们说我有一个这样的课程:
public class OuterClass {
//...
private class InnerClass {
private int x; // This variable makes sense
public int y; // Is there any use for this?
}
}
在上面的代码中,由于内部类是私有的,因此只有外部类可以访问其所有变量,甚至是私有变量。内部类本身对任何其他类都不可见,而是封闭的外部类。
所以即使上面的变量y
是公共的,它也不能被外部类以外的任何其他类访问。
私有内部类中的所有访问修饰符似乎都是私有的,不是吗?
因此,有没有理由为内部类的任何成员声明访问修饰符?
答案 0 :(得分:0)
访问修饰符可能重要的情况是覆盖超类方法的方法(例如toString())。您无法降低重写方法的可见性。必须始终将toString()声明为public才能使类编译。
当外部类访问私有成员时,编译器会创建一个合成方法。此合成方法仅在嵌套类的.class文件中可见。
当内部类本身不是私有时,访问修饰符范围很重要的另一种情况。