class Animal { void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { void sound() { System.out.println("Dog barks"); } } class Cat extends Animal { void sound() { System.out.println("Cat meows"); } } public class TestPolymorphism { public static void main(String[] args) { Animal myDog = new Dog(); Animal myCat = new Cat(); // Method overridden in Dog class is called at runtime myDog.sound(); // Method overridden in Cat class is called at runtime myCat.sound(); } }class Animal { public void animalSound() { System.out.println("The animal makes a sound"); } } class Pig extends Animal { //extends Animal public void animalSound() { System.out.println("The pig says: wee wee"); } } class Dog extends Animal { //extends Animal public void animalSound() { System.out.println("The dog says: bow wow"); } } class Main { public static void main(String[] args) { Animal myAnimal = new Animal(); // Create a Animal object Animal myPig = new Pig(); // Create a Pig object Animal myDog = new Dog(); // Create a Dog object myAnimal.animalSound(); myPig.animalSound(); myDog.animalSound(); } }class Animal { public void animalSound() { System.out.println("The animal makes a sound"); } } class Dog extends Animal { public void animalSound() { System.out.println("The dog barks"); } } class Cat extends Animal { public void animalSound() { System.out.println("The cat meows"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Animal(); Animal myDog = new Dog(); Animal myCat = new Cat(); myAnimal.animalSound(); myDog.animalSound(); myCat.animalSound(); } }