我观察到外部类可以访问内部类私有(private)实例变量。这怎么可能?这是一个演示相同的示例代码:
class ABC{
class XYZ{
private int x=10;
}
public static void main(String... args){
ABC.XYZ xx = new ABC().new XYZ();
System.out.println("Hello :: "+xx.x); ///Why is this allowed??
}
}
为什么允许这种行为?
最佳答案
内部类只是将一些真正属于原始外部类的功能干净地分开的一种方式。当您有 2 个要求时使用它们:
- 如果在单独的类中实现,外部类中的某些功能将最为清晰。
- 即使它在一个单独的类中,其功能也与外部类的工作方式密切相关。
鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外部类的成员,因此它们可以访问外部类的方法和属性(包括私有(private))是有道理的。
关于java - 为什么外部 Java 类可以访问内部类私有(private)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1801718/