¿El súper tiene mayor prioridad que la clase externa?exterior frente a la clase Súper
Considere tenemos tres clases:
- ClassA
- ClassB
- clase Anonymous en ClassB que se extiende claseA
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()");
}
}
Cuando llamo new ClassB().test()
, me sale el siguiente resultado (que es más o menos lo esperado):
A foo()
A Var
Pregunta: ¿Se ha definido en alguna parte que la clase interna toma (métodos y miembros) en primer lugar de la superclase y después de la clase externa o es
JVM
aplicación compilador dependiente? He revisado el JLS (§15.12.3) pero no encontré ninguna referencia para eso, tal vez se indique allí pero no entendí algunos de los términos.
Traté de seguir la lógica en el JLS pero aún no tenía mi café ;-) Por experiencia, yo diría: estoy ** bastante ** seguro de que esto está bien especificado y ** no * * Depende de la implementación. Y * si * dependía de la implementación, dependería del compilador y no de la JVM, ya que esa decisión se toma en tiempo de compilación. –
@Joachim - Escribí JVM por error, gracias por señalarlo. – MByD