外部变量与继承变量的阴影优先排序

Shadowing Precedence Ordering for an outer variable vs an inherited variable

如果我有一个内部 class 位于定义了某个字段 "foo" 的外部 class 的上下文中,并且该内部 class 继承自另一个 class 也有一个 "foo" 字段,哪个 foo 在内部 class?

中可见

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

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


class OtherClass {
    int x;
}

如这里所说:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

If a declaration of a type (such as a member variable or a parameter name) in a particular scope (such as an inner class or a method definition) has the same name as another declaration in the enclosing scope, then the declaration shadows the declaration of the enclosing scope.

因此,父变量 class 将可见。你可以自己试试看是不是这样。

作为一个额外的信息,如果你想访问外部 class 中的变量,你可以使用 OuterClassName.this.foo.