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;
}
Приведенный выше код печатает 5 при компиляции и запуске. Он использует ковариантный возврат для переопределенного метода.
Почему он печатает 5 вместо 6, так как выполняет перегруженный метод getObj в классе SubCovariantTest.
Может кто-нибудь пролить свет на это. Благодарю.