Имеет ли super более высокий приоритет, чем внешний класс?
Предположим, у нас есть три класса:
ClassA.java:
public class ClassA {
protected String var = "A Var";
public void foo() {
System.out.println("A foo()");
}
}
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()");
}
}
Когда я вызываю new ClassB (). Test ()
, я получаю следующий результат ( что вполне ожидаемо):
A foo()
A Var
Вопрос: Определено ли где-то, что внутренний класс принимает (методы и члены) сначала из суперкласса, а затем из внешнего класса, или это зависит от реализации компилятора JVM ? Я просмотрел JLS (§15.12.3), но не нашел для этого никакой ссылки, может быть, там указано, но я неправильно понял некоторые термины?