gpt4 book ai didi

java - 转换到正确的子类

转载 作者:行者123 更新时间:2023-12-01 07:41:19 24 4
gpt4 key购买 nike

我有一个名为 Car 的父类(super class),它有 3 个子类。

class Ford extends Car{

}

class Chevrolet extends Car{

}


class Audi extends Car{

}

现在我有一个名为 printMessge(Car car) 的函数,它将打印特定汽车类型的消息。在实现中,我使用 if 语句来测试这样的类的实例。

public int printMessge(Car car){
if((Ford)car instanceof Ford){
// print ford

}else if((Chevrolet)car instanceof Chevrolet){
// print chevrolet

}else if((Audi)car instanceof Audi){
// print Audi
}
}

例如,如果我第一次使用福特 printMessge(new Ford()) 调用它,它会打印福特消息,但是当我使用 printMessge(new Chevrolet() 调用它时),我从第一个 if 语句中得到 异常,雪佛兰不能转换为福特。

我做错了什么以及最好的方法是什么。

谢谢

最佳答案

您不应该在使用 instanceof之前进行转换。 instanceof 的重点是动态测试它:

if (car instanceof Ford) {
// You can safely cast to Ford *within* this block
}

...

但是,如果您可以控制这些类,通常最好将 printMessage 设为 Car 中的抽象方法,以便每个子类都可以适本地实现它他们自己。通过虚拟方法进行多态性通常优于使用 instanceof 进行显式类型测试。

关于java - 转换到正确的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4530376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com