Multiple inheritance is the ability to derive a class from more than one direct base class (§ 15.2.2, p. 600). A multiply derived class inherits the properties of all its parents. Although simple in concept, the details of intertwining multiple base classes can present tricky design-level and implementation-level problems.
To explore multiple inheritance, we’ll use a pedagogical example of a zoo animal hierarchy. Our zoo animals exist at different levels of abstraction. There are the individual animals, distinguished by their names, such as Ling-ling, Mowgli, and Balou. Each animal belongs to a species; Ling-Ling, for example, is a giant panda. Species, in turn, are members of families. A giant panda is a member of the bear family. Each family, in turn, is a member of the animal kingdom—in this case, the more limited kingdom of a particular zoo.
We’ll define an abstract ZooAnimal
class to hold information that is common to all the zoo animals and provides the most general interface. The Bear
class will contain information that is unique to the Bear
family, and so on.
In addition to the ZooAnimal
classes, our application will contain auxiliary classes that encapsulate various abstractions such as endangered animals. In our implementation of a Panda
class, for example, a Panda
is multiply derived from Bear
and Endangered
.