Reference
별도의 공식문서가 없는 주제이므로 평소 생각했던 것들을 정리한 포스팅입니다
다중상속이 가능하다는 것은 여러 부모로부터 프로퍼티/메서드를 받을 수 있음을 뜻합니다. 여기서 만약 다중상속받는 부모들이 동일한 메서드를 각각 가지고 있었다면 어떻게 될까요? 자식은 어떤 부모의 메서드를 사용해야 하는 걸까요?
이렇게 충돌이 발생하는 문제를 다이아몬드 문제
라고 하며, 자바와 Swift에서는 컴파일러 level에서 다중상속을 지원하지 않습니다
Protocol Extension으로 default Implementation을 제공하는 경우에도 동일한 메서드를 제공하는 여러 프로토콜을 다중채택한다면 다이아몬드 문제에 직면할 수 있습니다
다만, 다중상속과는 다르게 컴파일러가 잡아주지 않아 런타임 에러로 발현되므로 설계에 각별한 주의가 필요합니다