Java inheritance question

Posted by Milos on Stack Overflow See other posts from Stack Overflow or by Milos
Published on 2010-04-13T01:44:40Z Indexed on 2010/04/13 1:52 UTC
Read the original article Hit count: 385

I have an abstract class Airplane, and two classes PassengerAirplane and CargoAirplane, which extend class Airplane. I also have an interface Measurable, and two classes that implement it - People and Containers.
So, Airplane can do many things on its own, and there is a method which allows measurable things to be added to the airplane (called addAMeasurableThing). The only difference between PassengerAirplane/CargoAirplane and just an Airplane is that addAMeasurableThing should only accept People / Containers, and not any kind Measurable things. How do I implement this?

I tried doing:
Airplane class:

public abstract Airplane addAMeasurableThing (Measurable m, int position);

PassengerAirplane class:

public Airplane addAMeasurableThing (Measurable m, int position) { if (m instanceof People)...

CargoAirplane class:

public Airplane addAMeasurableThing (Measurable m, int position) { if (m instanceof Containers)...

But when I was debugging it, I've noticed that addAMeasurableThing in the CargoAirplane class never gets called, because both methods have the same signature. So how can the appropriate PassengerAirplane/CargoAirplane's addAMeasurableThing be called, depending on the type of Measurable thing that is being passed on?

Thanks!

© Stack Overflow or respective owner

Related posts about java

Related posts about inheritance