【发布时间】:2010-04-13 01:44:40
【问题描述】:
我有一个抽象类Airplane,以及两个类PassengerAirplane 和CargoAirplane,它们扩展了Airplane 类。
我还有一个接口 Measurable,以及两个实现它的类 - People 和 Containers。
所以,飞机可以自己做很多事情,并且有一种方法可以将可测量的东西添加到飞机上(称为 addAMeasurableThing)。 PassengerAirplane/CargoAirplane 和只是一个 Airplane 的唯一区别是 addAMeasurableThing 应该只接受 People / Containers,而不是任何类型的 Measurable 事物。我该如何实现?
我尝试过:
飞机等级:
公共抽象飞机 addAMeasurableThing(可测量的 m,int 位置);
PassengerAirplane 类:
公共飞机 addAMeasurableThing (可测量的 m,int 位置){ if (m 人的实例)...
CargoAirplane 类:
公共飞机 addAMeasurableThing (可测量的 m,int 位置){ if (m 容器实例)...
但是当我调试它时,我注意到 CargoAirplane 类中的 addAMeasurableThing 永远不会被调用,因为这两个方法具有相同的签名。那么如何调用适当的PassengerAirplane/CargoAirplane 的addAMeasurableThing,这取决于传递的Measurable 事物的类型?
谢谢!
【问题讨论】:
-
也许再贴一些你的代码,听起来可能还有其他事情发生。
-
是的,问题不清楚。你是什么意思“我注意到 CargoAirplane 类中的 addAMeasurableThing 永远不会被调用,因为这两个方法具有相同的签名。”你的测试类实现是什么?
-
您确定要覆盖该方法吗?因为如果你是,你不应该有你描述的问题。
标签: java inheritance interface abstract-class