在内部类中,外部类的变量是可以访问的,但方法的局部变量不行。我理解方法的局部变量不可访问,但我想知道为什么外部类变量是可访问的?
我的理解是内部类与外部类绑定,只要父类可用,子类就可以访问其父类的变量。我的理解正确吗?
我的理解是内部类与外部类绑定,只要父类可用,子类就可以访问其父类的变量。我的理解正确吗?
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