프로그래밍에서 '상속(Inheritance)'과 '합성(Composition)'의 차이점은?

보통 freeCodeCamp
보기 및 정답
A 상속과 합성은 코드를 재사용하는 동일한 개념이며, 문법적 표현 방식만 다를 뿐 설계적 차이가 없으므로 어떤 방식을 사용하든 결과는 같고 볼 수 있다
B 상속은 'is-a' 관계(~이다)로 부모 클래스를 확장하고, 합성은 'has-a' 관계(~을 가지다)로 객체를 내부에 포함하여 기능을 재사용한다
C 합성은 객체를 내부에 포함하는 방식이므로 코드를 재사용하는 것이 불가능하며, 재사용이 필요하면 반드시 상속을 사용해야 한다
D 상속은 코드의 재사용과 확장에서 합성보다 항상 좋은 설계이며, 가능하면 상속을 우선 사용해야 올바른 객체지향 설계이다

해설

상속(Dog is-a Animal)은 부모 클래스의 구현을 물려받지만 강한 결합을 만들 수 있습니다. 합성(Car has-a Engine)은 필요한 기능을 가진 객체를 포함하여 더 유연한 설계가 가능합니다. GoF 디자인 패턴은 '상속보다 합성을 선호하라(Favor composition over inheritance)'고 권장합니다.

코딩, 제대로 배우고 싶다면?

개념 확인은 퀴즈로, 실력은 실전 프로젝트로.
투더제이 코딩클래스에서 시작하세요.

정규반 살펴보기
START THE LOOP · CHOOSE

시장과 사람의 답을 봤다면,
다음 결과물의 구조를 고릅니다.

한 번의 결과에 기대지 않고 다시 만들 수 있도록, 문제 발견부터 제작·배포·수익화까지 이어지는 전체 흐름을 익혀보세요.

TTJ CLASS에서 다음 구조 고르기
처리 중...