6.5. Multiple Levels of Inheritance

As I indicated at the beginning of the chapter, there is nothing to prevent a derived class from being used as a base class. For example, you could derive a class Spaniel from the class Dog without any problem:

Try It Out: A Spaniel Class

Start the Spaniel class off with this minimal code:

class Spaniel extends Dog {
  public Spaniel(String aName) {
    super(aName, "Spaniel");
  }
}

To try this out you can add a Spaniel object to the array theAnimals in the previous example, by changing the statement to:

Animal[] theAnimals = {
                        new Dog("Rover", "Poodle"),
                        new Cat("Max", "Abyssinian"),
                        new Duck("Daffy","Aylesbury"),
                        new Spaniel("Fido")
                      };

Don't forget to add in the comma after the Duck object. Try running the example again a few times.

6.5.1.

6.5.1.1. How It Works

The class Spaniel will inherit members from the class Dog, including the members of Dog that are inherited from the class Animal. The class Dog is a direct superclass, and the class Animal is an indirect superclass of the class Spaniel. The only additional member of Spaniel is the constructor. This calls the Dog class constructor using the keyword super and passes the value of aName and the String object "Spaniel" to it.

If you run the TryPolymorphism class a few times, you should get a choice of the Spaniel object from time to time. Thus, the class Spaniel is also participating in the polymorphic selection of the methods toString() and sound(), which in this case are inherited from the ...

Get Ivor Horton's Beginning Java™ 2, JDK™ 5th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.