我观察到外部类可以访问内部类私有实例变量。这怎么可能?这是一个演示相同的示例代码:
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 个要求时,可以使用它们:
鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外部类的成员,因此它们可以访问外部类的方法和属性(包括私有)是有道理的。