java – 当超类没有实现接口但子类是的时,在接口子类和超类之间进行转换

在以下代码中

abstract class Vehicle { }
class Car extends Vehicle implements LandMover { }
interface LandMover { }
     Car porsche=new Car();
     LandMover lmv;
     lmv = porsche;
     Vehicle vec = (Vehicle)lmv;

因为类车和接口LandMover之间没有关系,所以第4行不应该有编译错误吗?如果没有什么可能是原因.谢谢!!

最佳答案
编译器只检查是否存在可能的关系,并且只有一个:

LandMover可以是一辆汽车,而后者又是一辆汽车.由于您通过使用显式强制转换来保证此转换正常,因此编译器很高兴.

转载注明原文:java – 当超类没有实现接口但子类是的时,在接口子类和超类之间进行转换 - 代码日志