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/53293969/

相关文章:

python - 如何在 Python 的语句中使用变量?

java - 有什么方法可以调用私有(private)方法?

java - 检测方法执行链中的任何方法是否使用特定注释进行注释

java - 在 Eclipse IDE for Java Developers 中安装 STS 时显示错误

java - 如何更新 JSP 中的现有 cookie?

java - 斯坦福 NER 错误 : Loading distsim lexicon Failed

c++ - 类中成员声明的重新排序规则

javascript - Typescript TS2339 类型上不存在属性 - 类声明

node.js - Eslint 无法识别使用 nodejs 12 的私有(private)字段声明

JAVA继承访问