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.

Может кто-нибудь пролить свет на это. Благодарю.

Ответы на вопрос(7)

Ваш ответ на вопрос