Closed undeadtimo closed 5 months ago
다른 언어들에선 처리 방식이 약간씩 다르다는 점만 알고 있었는데, 실제로 C++의 예시 코드를 보니 흥미롭네요! 각 언어가 상속을 대하는 방식들이 참 달라 철학이 느껴집니다. 코드에서 어떤 클래스의 메소드를 상속받을 지 결정하는 부분은 얼핏 super.
가 생각나기도 하지만 아예 클래스명이 들어가니 신기하네요. 좋은 내용 공유 감사드립니다.
저희가 Java에 대해 공부를 하고 있지만 가끔 다른 언어에 대한 정보도 같이 본다면 시야를 넓혀줄 것이라 생각하여,
다중상속에 대한 C++의 처리방식을 가져와보았는데 흥미롭게 봐주시니 제가 더 감사함을 느꼈습니다.
based on: #103 by @clare-u
clare-u 님의 다중상속과 다이아몬드 문제에 대한 글, 흥미롭게 읽었습니다.
추상 클래스와 인터페이스의 상속에 대한 차이점을 명확하게 인지하지 못하고 있었으며,
클래스가 클래스를 상속하는 다중 상속은 불가능하지만, 인터페이스를 통한 다중 상속은 가능하다는 사실은 알고 있었지만, 그 이유는 알고 있지 못했었습니다.
그러나 clare-u 님께서 작성하신 글을 통해 추상 클래스와 인터페이스의 차이점을 명확하게 구분할 수 있게 되었고, 클래스가 클래스를 상속할 때의 다중 상속이 불가능한 이유인 '다이아몬드 문제'에 대해 알게 되었습니다.
특히, 모든 예제 코드들을 하나씩 구별하여 정리해주셔서 코드에 대한 이해가 수월하였습니다.
clare-u 님께서 설명해주신 다이아몬드 문제를 본 이후, C++에서는 어떤 방식으로 다중 상속을 가능케 하고 있을지 궁금증이 생겨 추가적으로 찾아보았습니다.
c++ 에서는 이런식으로 메서드 앞에 어떤 상위 클래스의 메서드를 호출하는지 명시함으로써 다이아몬드 문제를 해결하고 있었습니다.