超级优先级比外级优先级高吗?
考虑我们有三个类:
ClassA.java:
public class ClassA {
protected String var = "A Var";
public void foo() {
System.out.println("A foo()");
}
}
Run Code Online (Sandbox Code Playgroud)
ClassB.java:
public class ClassB {
private String var = "B Var";
public void test() {
new ClassA() {
public void test() {
foo();
System.out.println(var);
}
}.test();
}
public void foo() {
System.out.println("B foo()");
}
}
Run Code Online (Sandbox Code Playgroud)
当我打电话时new ClassB().test(),我得到以下输出(这是非常期待的):
A foo()
A Var
Run Code Online (Sandbox Code Playgroud)
问题:它是在某个地方定义的,内部类首先从超类中获取(方法和成员),然后从外部类中获取,还是依赖于JVM编译器实现?我查看了JLS(§15.12.3),但找不到任何参考,也许有人指出,但我误解了一些条款?