我有一个代表国际象棋棋子的接口和一堆用于继承国际象棋棋子接口的特定棋子的类。这些类共享许多方法,例如移动或捕获,但是许多类还具有特定于片段的方法,例如使用典当进行促销,而其他则没有。
我知道我可以将超类对象类型转换为子类,并调用子类特定的方法,如下所示:
Piece piece = new Pawn();
((Pawn)piece).pawnSpecifcMethod();
...但是我被告知,使用Java进行转换是不好的做法,因为它会导致运行时错误。有没有更好的方法来设计我的类结构,这样我就可以拥有一个界面而不必担心所有这种讨厌的类型转换技巧?
预先感谢Java初学者:(