✅ 핵심 요약
1️⃣ 상속 (Inheritance)
- is-a 관계:
ShrimpBurger
is aBurger
- 코드 재사용성이 높지만, 유연성이 떨어지고 유지보수가 어려울 수 있음
- 부모 클래스의 변경이 자식 클래스에 영향을 미침
2️⃣ 컴퍼지션 (Composition)
- has-a 관계:
BurgerSet
has aBurger
andCoke
- 여러 객체를 조합하여 유연하게 설계 가능
- 클래스 간의 결합도를 낮추어 유지보수가 쉬움
3️⃣ 코드에서의 적용
ShrimpBurger
→Burger
를 상속받아 확장
BurgerSet
→Burger
와Coke
를 컴퍼지션으로 포함
- 세트 메뉴 같은 조합은 컴퍼지션이 더 적절함
✅ 결론
- 공통 기능을 공유하는 경우 → 상속
- 유연한 조합이 필요한 경우 → 컴퍼지션
- 상황에 맞게 두 개념을 적절히 사용하면 더 좋은 객체 지향 설계를 할 수 있다!
Share article