如果我有一个内部类,它位于定义某个字段“foo”的外部类的上下文中,并且该内部类继承自另一个也具有“foo”字段的类,该内部类在内部可见类?
这是一个例子。正在访问哪个x?
class OuterClass {
int x;
class NestedClass extends OtherClass {
int y = x /* which x is accessed here */
}
}
class OtherClass {
int x;
}
答案 0 :(得分:2)
正如其中所说:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
如果是类型的声明(例如成员变量或参数 name)在特定范围内(例如内部类或方法) 定义)与封闭中的另一个声明具有相同的名称 范围,然后声明影响封闭的声明 范围。
因此,父类的变量将是可见的。您可以试着亲眼看看情况就是这样。
作为额外的信息,如果要访问外部类中的变量,可以使用OuterClassName.this.foo
来执行此操作。