Post date: Sep 28, 2017 6:34:22 AM
Chapter 8: Polymorphism and Abstract Classes
Polymorphism
Ex1:
Ex 2:
Examine the following codes:
abstract public class Animal { public void greeting() { System.out.println("!"); } }
public class Cat extends Animal { @Override public void greeting() { System.out.println("Meow!"); } }
public class Dog extends Animal { @Override public void greeting() { System.out.println("Woof!"); } public void greeting(Dog another) { System.out.println("Woooooooooof!"); } }
public class BigDog extends Dog { @Override public void greeting() { System.out.println("Woow!"); } @Override public void greeting(Dog another) { System.out.println("Woooooowwwww!"); } }
Explain the outputs (or error) for the following test program.
public class TestAnimal { public static void main(String[] args) { // Using the subclasses Cat cat1 = new Cat(); cat1.greeting(); Dog dog1 = new Dog(); dog1.greeting(); BigDog bigDog1 = new BigDog(); bigDog1.greeting(); // Using Polymorphism Animal animal1 = new Cat(); animal1.greeting(); Animal animal2 = new Dog(); animal2.greeting(); Animal animal3 = new BigDog(); animal3.greeting(); Animal animal4 = new Animal(); // Downcast Dog dog2 = (Dog)animal2; BigDog bigDog2 = (BigDog)animal3; Dog dog3 = (Dog)animal3; Cat cat2 = (Cat)animal2; dog2.greeting(dog3); dog3.greeting(dog2); dog2.greeting(bigDog2); bigDog2.greeting(dog2); bigDog2.greeting(bigDog1); } }
(source: http://www3.ntu.edu.sg/home/ehchua/programming/java/J3f_OOPExercises.html#ExercisePolymorphism)