class G {
int x = 5;
}
class H extends G {
int x = 6;
}
public class CovariantTest {
public G getObject() {
System.out.println("g");
return new G();
}
public static void main(String[] args) {
CovariantTest c1 = new SubCovariantTest();
System.out.println(c1.getObject().x);
System.out.println(new H().x);
}
}
class SubCovariantTest extends CovariantTest {
public H getObject() {
System.out.println("h");
return new H();
}
}
Выход:Java - Перекрытие с общековариантными типами WRT переменных
h
5
6
Видимо два Println заявления в основном методе не то же самое. Как новый объект H() возвращается из метода getObject класса SubCovariant, назначенного для ссылки G?
** Вы никогда не получите * 5 в качестве вывода * с кодом, который вы отправили !! ** –
Похоже, что есть ошибка опечатки. Где-то x должно быть 5 'int x = 5;' – Kartic
thanks..edited to int x = 5; – rpg