访问内部类中的外部类变量

2022-09-01 06:42:32

在内部类中,外部类的变量是可访问的,但方法的局部变量不是。我理解了关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的?

我的理解是,由于内部类与外部类绑定,因此只要父类可用,子类就可以访问其父变量。我说的对吗?


答案 1

假设你的外部类从内部类(非静态)的作用域调用 ,以获得字段。OuterOuter.this.foo

例如

Outer.this.foo=new ArrayList<>();

其中 Outer 是类的名称并标识字段。foo

您也可以直接抓住它,但如果由于阴影而导致命名冲突,它将选择内部字段。foo=new Baz()

如果它是一个静态的内部类,你需要一个显式实例:

outerInstance.foo=new ArrayList<>();

或者,如果要访问的字段是静态的,请像往常一样通过以下方式访问它:

Outer.staticFoo=new ArrayList<>();

答案 2

答:由于词法作用域,Java中的外部类变量是可访问的。

什么是词法范围?

按编写代码的顺序定义的范围。假设您的类结构如下所示

OuterMost  
   --Inner  
     --InnerMost

然后,内部最类将能够从内部以及外部访问变量。


推荐