Covariantes Java
public class CovariantTest {
public A getObj() {
return new A();
}
public static void main(String[] args) {
CovariantTest c = new SubCovariantTest();
System.out.println(c.getObj().x);
}
}
class SubCovariantTest extends CovariantTest {
public B getObj() {
return new B();
}
}
class A {
int x = 5;
}
class B extends A {
int x = 6;
}
El código anterior imprime 5 cuando se compila y ejecuta. Utiliza el retorno covariante para el método anulado.
¿Por qué imprime 5 en lugar de 6, ya que ejecuta el método overObj getObj en la clase SubCovariantTest?
¿Alguien puede arrojar algo de luz sobre esto? Gracias.