Java 当一个类不希望在其超类中声明所有方法时,如何将其视为子类?
如果我想将Java 当一个类不希望在其超类中声明所有方法时,如何将其视为子类?,java,design-patterns,polymorphism,Java,Design Patterns,Polymorphism,如果我想将ToyTruck视为Truck的子类,但我不想在Truck类中声明所有方法,该怎么办?。例如,Truck类有一个方法addgalpaline(),但是aToyTruck不需要汽油来工作。我得到的一个解决方案是,我将只重写addgallery()方法,并将其作为空方法实现。但对我来说,这并不意味着ToyTruck没有方法addgalpaline()。我认为还有一个解决方案是将其作为一个组合,但我不知道从何处开始,以及如何使用组合使用多态性。在这种情况下,ToyTruck不是一个卡车,可能
ToyTruck
视为Truck
的子类,但我不想在Truck
类中声明所有方法,该怎么办?。例如,Truck
类有一个方法addgalpaline()
,但是aToyTruck
不需要汽油来工作。我得到的一个解决方案是,我将只重写addgallery()
方法,并将其作为空方法实现。但对我来说,这并不意味着ToyTruck
没有方法addgalpaline()
。我认为还有一个解决方案是将其作为一个组合,但我不知道从何处开始,以及如何使用组合使用多态性。在这种情况下,ToyTruck不是一个卡车,可能不应该是一个子类。相反,考虑制作一组描述你的卡车的界面。例如可移动等
您还可以将卡车抽象为第三类,称为LargeTruck
,它表示实际的卡车
如果这不是一个选项,您可以考虑在ToyTruck中重写<代码> AdGaSoLoIn()/<代码>,并使其抛出<代码> unService操作异常>代码>,但是这并不妨碍该方法被调用,它只是使它过早失效。
<>请考虑ToyTruck是否是有意义的一个子类:代码>卡车>代码>。“如果它看起来像鸭子,嘎嘎声像鸭子,但需要电池——你可能有错误的抽象概念。”无法想象一个玩具和真卡车混合的商业领域。以及如何处理柴油卡车和电动卡车?非常感谢,我想我会试试你的第一个建议