阴影优先级对外部变量与继承变量进行排序

时间:2016-09-29 05:49:51

标签: java class scoping

如果我有一个内部类,它位于定义某个字段“foo”的外部类的上下文中,并且该内部类继承自另一个也具有“foo”字段的类,该内部类在内部可见类?

这是一个例子。正在访问哪个x?

class OuterClass {
    int x;
    class NestedClass extends OtherClass {
        int y = x  /* which x is accessed here */
    }
}


class OtherClass {
    int x;
}

1 个答案:

答案 0 :(得分:2)

正如其中所说:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

  

如果是类型的声明(例如成员变量或参数   name)在特定范围内(例如内部类或方法)   定义)与封闭中的另一个声明具有相同的名称   范围,然后声明影响封闭的声明   范围。

因此,父类的变量将是可见的。您可以试着亲眼看看情况就是这样。

作为额外的信息,如果要访问外部类中的变量,可以使用OuterClassName.this.foo来执行此操作。