假设我有一个类(class)火车,两个子类城际类和短跑运动员类,它们都是火车的类型。现在假设我想打印火车列表。当它是 Intercity 时,应打印 Intercity;当它是 sprinter 时,应打印 sprinter。
我认为这意味着我在 Intercity 和 sprinter 中创建了一个打印方法。然而,当程序通过火车列表进行迭代时,java 坚持在火车类中创建一个打印方法。
那么我该如何应对这个问题呢?我想到创建 print 方法,检查它是否是 intercity 或 sprinter 的实例,然后将其转换为相应的类型,然后调用该类型的 print 方法。
但是我想成为一名更好的程序员,这对我来说似乎不是最好的解决方案。
所以我的问题是应该如何处理上述情况?
最佳答案
您在 Train
父类(super class)中创建一个 print
方法,并在子类中重写它。这样,您就不必在打印之前检查 Train
对象的类型,并且不需要进行转换。
public class Train {
public void print ()
{
// here you might have a default printing logic, or you could keep this
// method abstract and leave the implementation to the sub-classes
}
}
public class Sprinter extends Train {
@Override
public void print ()
{
}
}
public class InterCity extends Train {
@Override
public void print ()
{
}
}
关于java - 仅当子类强制转换为父类时才调用子类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48484883/