java - 为什么我可以访问封闭类引用的私有(private)成员

标签 java static-members nested-class

我见过很多关于访问封闭类的私有(private)成员的问题。然而,我的问题恰恰相反。

如果我有(作为示例)以下代码:

public class A {

   private String outerString = "silly string";

   static class B {
      private final A someA = new A();      

      public void foo() {
         String b = someA.outerString ;
      }
   }
}

我想知道为什么要编译?由于我从 A 类(通过 someA.outerString)访问“outerString”实例变量的方式,我预计会出现错误。我知道内部类可以通过隐式“this”引用直接访问封闭类成员。但在这里,B 类是静态的,因此“this”引用不适用。

最佳答案

BA 的成员,因此可以访问 Aprivate 字段和方法。
在这种情况下,尽管 Bstatic,但它使用 A 的实例来访问字段 A.outerString

关于java - 为什么我可以访问封闭类引用的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635282/

相关文章:

c# - 每个进程是否只有一个静态变量实例?

android - 我可以创建内部静态类的实例吗?

c++ - 嵌套类——在 C++ 中将声明与定义分开

java - Axon从2.4.3版本迁移到3.1.1有什么具体方法

java - 按字母顺序对对象进行排序

java - 如何将整数数组传递给 MyBatis 中的 IN 子句

Java:与接口(interface)、抽象类或内部类的可重用封装?

java - 清除 JTextArea 中的文本

c++ - 从 2 个继承类访问静态成员

c++ - 错误 LNK2001 : unresolved external symbol "private: static class