我有一个关于多态赋值的问题。让我们假设以下声明:
CAR car;
MERCEDES mercedes;
//MERCEDES inherits from CAR
car = new MERCEDES(classA);
mercedes = car
最后一项任务可能吗?我认为第一个任务将汽车类型更改为梅塞德斯,因此最后一个任务是正确的。但是在我拥有的工作表中,它显示它无法编译,因为赋值源和目标不兼容。这是对的吗?为什么会这样?
你的工作表是对的,因为CAR
不一定是MERCEDES
。在你的情况下,这恰好是正确的,但想想一般情况。
可能有很多汽车类型,编译器根本无法保证赋值表达式为真。