Exterior vs. Súper clase
Super tiene mayor prioridad que la clase externa?
Considerar tenemos tres clases:
Clase Clase Clase anónima en ClassB que extiende ClassAClassA.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()");
}
}
Cuando llamonew ClassB().test()
, Obtengo el siguiente resultado (que es bastante esperado):
A foo()
A Var
Pregunta: ¿Se define en algún lugar que la clase interna toma (métodos y miembros) primero de la superclase y luego de la clase externa o es JVMDepende de la implementación del compilador? He revisado el JLS (§15.12.3) pero no pude encontrar ninguna referencia para eso, tal vez se señala allí, pero no entendí algunos de los términos.