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.