У меня вопрос о полиморфных назначениях. Давайте предположим, что это заявление:Полиморфизм: источник и цель несовместимы
CAR car;
MERCEDES mercedes;
//MERCEDES inherits from CAR
car = new MERCEDES(classA);
mercedes = car
ли последнее назначение возможно? Я думал, что первое задание изменяет тип автомобиль на MERCEDES, и поэтому последнее назначение было бы правильным. Но на листах я показываю, что он не компилируется, потому что источник назначения и цель несовместимы. Правильно ли это? И почему это так?
'car = new MERCEDES (...)' не изменяет * тип * переменной 'car'; это все еще «АВТОМОБИЛЬ». Назначение действительно, потому что 'MERCEDES' ** является **' CAR', но это не меняет того факта, что 'car' не гарантируется какой-либо конкретный подкласс CAR. – jonrsharpe
Это означает, что статический тип остается CAR в то время как динамический тип MERCEDES – DevX10