Java Polymorphism Example

Java polymorphism is the ability that a parent class can be extended by differnt child classes, and each child class can have the same inherited method from the parent class as other child classes, but the same method can act differntly with differnt child class. The example demonstrated here is a parent class Animal with 3 child classes Deer, Wold and Lion. They all inherited the abstract method describe(), but this method describe the child class accordingly, depends on if the class is a Deer or a Wolf or a Lion.

The Animal class

public abstract class Animal {
    
    private String breed;
    
    // constructor method
    public Animal(String b)   
    {
        breed=b;
    }
    
    // regular getter method
    public String getBreed()    
    {
        return breed;
    }
    
    // abstract method has no implementation
    public abstract void describe(); 

}

The Deer class

public class Deer extends Animal{
    
    private String name;
    
    public Deer(String nm)
    {
        //calls super class constructor
        super("deer");
        name=nm;
    }

    //required method, 
    //overrides the one in its parent class
    @Override
    public void describe() {
        System.out.print("A "+getBreed()); 
        System.out.print(" named ");
        System.out.println(name);
    }
    
}

The Wolf class

public class Wolf extends Animal{
    
    private String name;
    
    public Wolf(String nm)
    {
        //calls super class constructor
        super("wolf");
        name=nm;
    }

    //required method, 
    //overrides the one in its parent class
    @Override
    public void describe() {
        System.out.print("A "+getBreed()); 
        System.out.print(" named ");
        System.out.println(name);
    }
    
}

The Lion class

public class Lion extends Animal{
    
    private String name;
    
    public Lion(String nm)
    {
        //calls super class constructor
        super("lion");
        name=nm;
    }

    //required method, 
    //overrides the one in its parent class
    @Override
    public void describe() {
        System.out.print("A "+getBreed()); 
        System.out.print(" named ");
        System.out.println(name);
    }
    
}

The AnimalIdentifier class to test the polymorphism

public class AnimalIdentifier {
    
    public static void main(String args[])
    {
        //animal reference 
        Animal animalRef;
        
        //constructing objects deer, wolf and lion
        Deer deer = new Deer("Sophie");
        Wolf wolf = new Wolf("Bran");
        Lion lion = new Lion("Leon");
        
        //assign each animal to animalRef,
        //then calls the describe method.
        animalRef = deer; animalRef.describe();
        animalRef = wolf; animalRef.describe();
        animalRef = lion; animalRef.describe();
        
        return;
    }
    
}

The output

    A deer named Sophie
    A wolf named Bran
    A lion named Leon

Search within Codexpedia

Custom Search

Search the entire web

Custom Search