只有当孩子被投入父母时才调用子类的方法?

时间:2018-01-28 09:25:51

标签: java oop inheritance

假设我有一个班级列车,两个班级城际和短跑运动员,它们是列车的类型。现在说我要打印列车列表。当它是城际时,它会打印城际,当它是短跑运动员时,它会打印短跑运动员。

我认为这意味着我在城际和短跑运动员中创建方法打印。然而,当程序通过火车列表迭代时,java坚持在类列车中创建打印方法。

那么我该如何应对呢?我想创建一个print方法来检查它是一个intercity或sprinter的实例,然后将它转换为相应的类型,然后调用该类型的print方法。

但是我想成为一名更好的程序员,对我来说它看起来不是最好的解决方案。

所以我的问题是如何处理上述情况呢?

1 个答案:

答案 0 :(得分:2)

您在print超类中创建Train方法,并在子类中覆盖它。这样,您不必在打印之前检查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 ()
    {

    }

}