我观察到外部类可以访问内部类私有(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/53293969/