An implementation of Object-Oriented Structuring where Classes can inherit from several superclasses. The class hierarchy must be an acyclic graph so that subclasses inherit from superclasses and the distinction is clear.
Pros
- Code reusability: As classes can inherit from multiple classes more code can be reused.
- Flexibility: It allows for more complex class hierarchies, allowing for flexibility in designing relationships between classes.
- Enhanced Modularity: As classes can inherit specific behaviour from different sources more modular code can be written.
Cons
- The Diamond Problem
- Can decrease readability: more complex class hierarchies can make code more difficult to read.