Mis*_*isa 1 java inheritance abstract-class interface
我有一个抽象类Airplane,以及两个类PassengerAirplane和CargoAirplane,它们扩展了类Airplane.我还有一个可衡量的接口,以及实现它的两个类 - People和Containers.
因此,飞机可以自己做很多事情,并且有一种方法可以将可测量的东西添加到飞机上(称为addAMeasurableThing).PassengerAirplane/CargoAirplane和Airplane之间的唯一区别是addAMeasurableThing应该只接受People/Containers,而不是任何可衡量的东西.我该如何实现?
我试过:
飞机课:
public abstract Airplane addAMeasurableThing(Measurable m,int position);
PassengerAirplane类:
public Airplane addAMeasurableThing(Measurable m,int position){if(m instanceof People)...
CargoAirplane类:
public Airplane addAMeasurableThing(Measurable m,int position){if(m instanceof Containers)...
但是当我调试它时,我注意到CargoAirplane类中的addAMeasurableThing永远不会被调用,因为两种方法都具有相同的签名.那么如何调用相应的PassengerAirplane/CargoAirplane的addAMeasurableThing,具体取决于传递的可衡量事物的类型?
谢谢!
使用泛型:
abstract class Airplane<M extends Measurable>{
public abstract Airplane addAMeasurableThing(M m, int position);
}
class PassengerAirplane extends Airplane<People>{
@Override
public Airplane addAMeasurableThing(People p, int position{ ... }
}
Run Code Online (Sandbox Code Playgroud)