Middle
Why do many experienced developers recommend preferring composition over inheritance?
sobes.tech AI
Answer from AI
Composition is preferable to inheritance for several reasons:
- Flexibility: composition allows dynamically changing an object's behavior by substituting different components.
- Avoiding tight coupling: inheritance creates a strong link between classes, which complicates maintenance and extension.
- Avoiding hierarchy issues: deep and complex inheritance hierarchies are hard to understand and maintain.
- Explicit separation of responsibilities: composition enables building objects from independent parts, each responsible for its own task.
Example of composition in Python:
class Engine:
def start(self):
print("Engine started")
class Car:
def __init__(self, engine):
self.engine = engine
def start(self):
self.engine.start()
engine = Engine()
car = Car(engine)
car.start() # Engine started
Here, Car uses Engine through composition, not inheritance.