SeaCreature

Category: Polymorphism
Author: Stuart Reges
Book Chapter: 9.3
Problem: SeaCreature
Assume the following classes have been defined:

        public class Mammal extends SeaCreature {
            public void method1() {
                System.out.println("warm-blooded");
            }
        }

        public class SeaCreature {
            public void method1() {
                System.out.println("creature 1");
            }

            public void method2() {
                System.out.println("creature 2");
            }

            public String toString() {
                return "ocean-dwelling";
            }
        }

        public class Whale extends Mammal {
            public void method1() {
                System.out.println("spout");
            }

            public String toString() {
                return "BIG!";
            }
        }

        public class Squid extends SeaCreature {
            public void method2() {
                System.out.println("tentacles");
            }
	    
            public String toString() {
                return "squid";
            }
        }

   Consider the following code fragment:

        SeaCreature[] elements = {new Squid(), new Whale(), new SeaCreature(),
                                  new Mammal()};
        for (int i = 0; i < elements.length; i++) {
            System.out.println(elements[i]);
            elements[i].method1();
            elements[i].method2();
            System.out.println();
        }

   What output is produced by this code?