为什么外部Java类可以访问内部类的私有成员?

我观察到外部类可以访问内部类的私有实例变量。这怎么可能?这是演示相同代码的示例代码:

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??

}

}

为什么允许这种行为?

回答:

内部类只是一种将真正属于原始外部类的功能完全分开的方法。当你有两个要求时,可以使用它们:

  1. 如果是在单独的类中实现的,那么外部类中的某些功能将最为清晰。
  2. 即使在单独的类中,该功能也与外部类的工作方式紧密相关。

鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外部类的成员,因此可以访问外部类的方法和属性(包括私有类)是有意义的。

以上是 为什么外部Java类可以访问内部类的私有成员? 的全部内容, 来源链接: utcz.com/qa/416361.html

回到顶部