Имеет ли super более высокий приоритет, чем внешний класс?
Предположим, у нас есть три класса:
- ClassA
- ClassB
- Анонимный класс вClassB, который расширяет ClassA
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), но не смог найти для этого никакой ссылки, может быть, там указано, но я неправильно понял некоторые термины?