다중상속을 지원하지 않는 이유

J.Noma·2022년 1월 10일
0

Swift : 가벼운 주제

목록 보기
8/9

Reference
별도의 공식문서가 없는 주제이므로 평소 생각했던 것들을 정리한 포스팅입니다


Diamond Problem

다중상속이 가능하다는 것은 여러 부모로부터 프로퍼티/메서드를 받을 수 있음을 뜻합니다. 여기서 만약 다중상속받는 부모들이 동일한 메서드를 각각 가지고 있었다면 어떻게 될까요? 자식은 어떤 부모의 메서드를 사용해야 하는 걸까요?

이렇게 충돌이 발생하는 문제를 다이아몬드 문제라고 하며, 자바와 Swift에서는 컴파일러 level에서 다중상속을 지원하지 않습니다

Appendix : Protocol도 다중상속이 불가할 수 있다

Protocol Extension으로 default Implementation을 제공하는 경우에도 동일한 메서드를 제공하는 여러 프로토콜을 다중채택한다면 다이아몬드 문제에 직면할 수 있습니다

다만, 다중상속과는 다르게 컴파일러가 잡아주지 않아 런타임 에러로 발현되므로 설계에 각별한 주의가 필요합니다

profile
노션으로 이사갑니다 https://tungsten-run-778.notion.site/Study-Archive-98e51c3793684d428070695d5722d1fe

0개의 댓글