多态性:源和目标不兼容

Polymorphism: source and target not compatible

我有一个关于多态赋值的问题。 让我们假设这个声明:

CAR car;
MERCEDES mercedes;
//MERCEDES inherits from CAR

car = new MERCEDES(classA);
mercedes = car

最后一个作业可以吗?我认为第一个赋值将 car 的类型更改为 MERCEDES 因此最后一个赋值是正确的。 但是在我的工作表中,它表​​明它无法编译,因为赋值源和目标不兼容。 这是正确的吗?为什么会这样?

您的表格是正确的,因为 CAR 不一定是 MERCEDES。这恰好适用于您的情况,但请考虑一般情况。

可能有很多车型,编译器根本无法保证赋值表达式为真。