我有一个抽象类飞机,和两个类PassengerAirplane和CargoAirplane,它们扩展了飞机类。 我还有一个可衡量的接口,以及两个实现它的类 - 人员和容器。
所以,飞机可以自己做很多事情,并且有一种方法可以将可度量的东西添加到飞机中(称为addAMeasurableThing)。 PassengerAirplane/CargoAirplane和仅仅是一架飞机之间的唯一区别是,addAeasurableThing应该只接受人/容器,而不是任何可衡量的事情。我如何实现这一点?Java继承问题
我想这样做:
飞机类:
公共抽象飞机 addAMeasurableThing(可测量米,整数 位);
PassengerAirplane类:
公众飞机addAMeasurableThing 的(Measurable男,INT位置){如果(M 的instanceof人)...
CargoAirplane类:
public airplane addAeasurableThing (Meas urable男,INT位置){如果(M 的instanceof容器)...
但是当我调试它,我注意到addAMeasurableThing在CargoAirplane类不会被调用,因为这两种方法具有相同的签名。那么,根据正在传递的可测量事物的类型,如何调用适当的PassengerAirplane/CargoAirplane的addAasurableThing?
谢谢!
也许会发布一些更多的代码,听起来好像还有其他的事情发生。 – 2010-04-13 01:48:13
是的问题不清楚。你是什么意思 “我注意到CargoAirplane类中的addAMeasurableThing永远不会被调用,因为两个方法都有相同的签名。”你的测试类实现是什么? – 2010-04-13 01:51:35
你确定你重写了这个方法吗?因为如果你是,你不应该有你描述的问题。 – 2010-04-13 01:54:03