컴포지션
- 다른 클래스의 일부 기능을 그대로 이용하고 싶으나, 전체 기능 상속은 피하고 싶을 때 사용
- Composition 또는 Aggregation 이라고도 한다.
- 부모 클래스의 메서드 오버라이딩을 하는 경우 내부 구현 방식의 얕은 이해로 오류가 생길 가능성이 증가
- 부모클래스가 변하면 자식 클래스는 계속 수정 되어야 한다.
class Calc:
def __init__(self, x, y):
self.x = x
self.y = y
self.calc2 = Calc2(x, y)
def add(self):
return self.x + self.y
def subtract(self):
return self.x - self.y
def multiply(self):
return self.calc2.multiply()
class Calc2:
def __init__(self, x, y):
self.x = x
self.y = y
def add(self):
return self.x + self.y
def multiply(self):
return self.x * self.y
cal1 = Calc(2, 11)
print(cal1.multiply())
22