I have the following code in which I have a parent class and its child. I am trying to determine how the code benefits from using polymorphism.
class FlyingMachines {
public void fly() {
System.out.println("No implementation");
}
}
class Jet extends FlyingMachines {
public void fly() {
System.out.println("Start, Taxi, Fly");
}
public void bombardment() {
System.out.println("Throw Missile");
}
}
public class PolymorphicTest {
public static void main(String[] args) {
FlyingMachines flm = new Jet();
flm.fly();
Jet j = new Jet();
j.bombardment();
j.fly();
}
}
What is the advantage of polymorphism when both flm.fly()
and j.fly()
give me the same answer?
In your example, the use of polymorphism isn't incredibly helpful since you only have one subclass of FlyingMachine
. Polymorphism becomes helpful if you have multiple kinds of FlyingMachine
. Then you could have a method that accepts any kind of FlyingMachine
and uses its fly()
method. An example might be testMaxAltitude(FlyingMachine)
.
Another feature that is only available with polymorphism is the ability to have a List<FlyingMachine>
and use it to store Jet
, Kite
, or VerySmallPebbles
.
One of the best cases one can make for using polymorphism is the ability to refer to interfaces rather than implementations.
For example, it's better to have a method that returns as List<FlyingMachine>
rather than an ArrayList<FlyingMachine>
. That way, I can change my implementation within the method to a LinkedList
or a Stack
without breaking any code that uses my method.