小编典典

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

all

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

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

为什么允许这种行为?


阅读 93

收藏
2022-07-16

共1个答案

小编典典

内部类只是一种干净地分离真正属于原始外部类的一些功能的方法。当您有 2 个要求时,可以使用它们:

  1. 如果外部类中的某些功能在单独的类中实现,它将是最清楚的。
  2. 即使它在一个单独的类中,其功能也与外部类的工作方式密切相关。

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

2022-07-16