class Animal { public void signature(){ System.out.println("I am an animal."); } } class Mammal extends Animal { int numberOfBabies; public Mammal(int babies) { numberOfBabies = babies; } public int getBabies() { return numberOfBabies; } public void signature() { System.out.println("I am a mammal! I birth "+numberOfBabies+" babies."); } } class Dog extends Mammal { private String name; public Dog(int babies, String name) { super(babies); this.name = name; } public String getName() { return name; } public void signature() { System.out.println("I am a dog! My name is "+name+"."); } } public class Polymorphism { public static void main(String args[]) { Animal animal = new Animal(); // Animal reference and object Animal mammal = new Mammal(3); // Animal reference but Mammal object Animal dog = new Dog(4, "Azor"); // Animal reference but Dog object animal.signature(); //output: I am an animal. mammal.signature(); //output: I am a mammal! dog.signature(); //output: I am a dog! //mammal.getBabies(); //dog.getName(); } }