Multiple inheritance lets one class derive from more than one parent, but a quick feature can turn a tidy hierarchy into a maze of overlapping responsibilities. section 1.2.4
When a tiny feature creates three diamonds
A library system adds VIPMember and SuperMember classes. Reusing Librarian::addBookItem through UserWithBookItemRight seems practical, until VIPMember inherits from both Member and UserWithBookItemRight, which themselves inherit from User. Adding SuperMember produces three diamond-shaped ambiguities. section 1.2.4
Compare the class diagram before and after introducing VIP members to see how shared behavior creates a diamond. section 1.2.4
The practical warning is straightforward:
- Reuse through multiple inheritance can hide ambiguity rather than remove duplication. section 1.2.4
- Adding more member capabilities compounds the hierarchy’s complexity. section 1.2.4
- Interfaces and composition over inheritance become alternatives when the hierarchy stops scaling cleanly. section 1.2.4



