我观察到外部类可以访问内部类的私有实例变量。这怎么可能?这是演示相同代码的示例代码:
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?? } }
为什么允许这种行为?
内部类只是一种将真正属于原始外部类的功能完全分开的方法。当你有两个要求时,可以使用它们:
鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外部类的成员,因此可以访问外部类的方法和属性(包括私有类)是有意义的。