我有一個抽象類飛機,和兩個類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