MST
星途 面试题库

面试题:Java多态下instanceof与复杂继承结构的向下转型

有一个继承体系,父类为Vehicle,子类有Car、Truck,Car又有子类SportsCar。代码如下: ```java Vehicle vehicle = new SportsCar(); // 请在此处补充代码,通过instanceof判断并进行正确的向下转型,调用SportsCar特有的方法showPerformance() ``` 假设`showPerformance()`方法是`SportsCar`类独有的,用来展示跑车性能。请完成上述代码,并说明在这种多层继承结构下,`instanceof`如何保证向下转型的安全性和准确性。
23.8万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
Vehicle vehicle = new SportsCar();
if (vehicle instanceof SportsCar) {
    SportsCar sportsCar = (SportsCar) vehicle;
    sportsCar.showPerformance();
}

在多层继承结构下,instanceof通过在运行时检查对象的实际类型来保证向下转型的安全性和准确性。它会判断对象是否是特定类型或其子类型的实例,如果是,则表明可以安全地进行向下转型,避免了ClassCastException异常。例如上述代码中,instanceof先判断vehicle实际指向的对象是否为SportsCar类型,如果是,就可以安全地将vehicle向下转型为SportsCar类型并调用showPerformance()方法。如果没有instanceof检查直接转型,若vehicle实际指向的不是SportsCar类型的对象,就会抛出ClassCastException异常。