Multiple inheritance lets a class derive directly from more than one superclass. It can combine a domain superclass with reusable behavior classes, but it may preserve hardcoded behavior choices and add coupling. section 7.3
Toy behaviors
A ToyCar can inherit from Toy, Roll, and Engine; ModelAirplane can inherit from Toy, Fly, and Engine; TrainSet can inherit from Toy, Roll, and ChooChoo. The subclass forwards play() and sound() explicitly with Roll::play(), Fly::play(), Engine::sound(), or ChooChoo::sound(). This shares behavior implementations, but each toy still hardcodes its choices. section 7.3
Use multiple inheritance when:
- A class must retain an is-a relationship with a primary superclass while sharing independent behavior classes. section 7.3
- An Adapter needs to implement a target interface while subclassing the adaptee. section 10.3



