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