访问内部类中的外部类变量
2022-09-01 06:42:32
在内部类中,外部类的变量是可访问的,但方法的局部变量不是。我理解了关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的?
我的理解是,由于内部类与外部类绑定,因此只要父类可用,子类就可以访问其父变量。我说的对吗?
在内部类中,外部类的变量是可访问的,但方法的局部变量不是。我理解了关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的?
我的理解是,由于内部类与外部类绑定,因此只要父类可用,子类就可以访问其父变量。我说的对吗?
假设你的外部类从内部类(非静态)的作用域调用 ,以获得字段。Outer
Outer.this.foo
例如
Outer.this.foo=new ArrayList<>();
其中 Outer 是类的名称并标识字段。foo
您也可以直接抓住它,但如果由于阴影而导致命名冲突,它将选择内部字段。foo=new Baz()
如果它是一个静态的内部类,你需要一个显式实例:
outerInstance.foo=new ArrayList<>();
或者,如果要访问的字段是静态的,请像往常一样通过以下方式访问它:
Outer.staticFoo=new ArrayList<>();
答:由于词法作用域,Java中的外部类变量是可访问的。
什么是词法范围?
按编写代码的顺序定义的范围。假设您的类结构如下所示
OuterMost
--Inner
--InnerMost
然后,内部最类将能够从内部以及外部访问变量。