在内部类中,外部类的变量是可访问的,但方法的局部变量是不可访问的。我了解有关方法的局部变量不可访问的部分,但我想知道为什么外部类变量可以访问?
我的理解是,由于内部类与外部类绑定,所以只要父级可用,子级就可以访问其父级变量。我对么?
在内部类中,外部类的变量是可访问的,但方法的局部变量是不可访问的。我了解有关方法的局部变量不可访问的部分,但我想知道为什么外部类变量可以访问?
我的理解是,由于内部类与外部类绑定,所以只要父级可用,子级就可以访问其父级变量。我对么?
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
然后最内层的类将能够从最内层和最外层访问变量。