java - 为什么外部 Java 类可以访问内部类私有(private)成员?

标签 java class private inner-classes private-members

我观察到外部类可以访问内部类私有(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 个要求时使用它们:

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

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

关于java - 为什么外部 Java 类可以访问内部类私有(private)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1801718/

相关文章:

java - RollingFileAppender 也删除早于某个日期的文件

Java 空对象还是对象创建?

java - 使用 apache 和 spring 以编程方式创建子域

c++ - 当类包含在另一个类中时,为什么不转发类工作的声明

javascript - 函数表达式中的私有(private)变量

C# 抽象方法 : internally public and virtual?

Java:XML 到对象以及对象到带有属性的 XML

html - GTM : Click trigger for button with many nested classes

python - 如何在 Dart 中正确使用子类的 super 方法?

python - python中的私有(private)公共(public)保护访问说明符