woowacourse-study / 2022-modern-java-in-action

우아한테크코스 4기 모던 자바 인 액션 스터디
10 stars 4 forks source link

다중상속은 반드시 지양해야만 하는 것인가? #10

Open bcc0830 opened 2 years ago

bcc0830 commented 2 years ago

문제

자바는 안되지만 파이썬은 가능하다. 기준이 대체 무엇인지 알아보자.

선정 배경

자바는 다중 상속을 지원하지 않으며 본 책의 본문에도 다중 상속에 대한 부정적 뉘앙스가 존재한다. 만일 다중 상속이 절대악이었다면 다른 언어에서도 다중 상속을 지원하지 않았을 것이다. 그렇다면 다중 상속은 어떤 장단점이 있는지 파악해야 할 필요가 있다고 생각한다. 자바가 왜 그토록 다중상속을 싫어하는지 알게되면 자바의 철학에 대해 더 잘 알 수 있다.

관련 챕터

[1장] 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? [9장] 리팩터링, 테스팅, 디버깅

bcc0830 commented 2 years ago

다중상속의 장점 : 작은 클래스 여러개를 조합하여 큰 기능을 하는 클래스를 쉽게 만들 수 있다 다중상속의 단점 : 다이아몬드 문제가 있을 수 있다.

다이아몬드 문제란

2개 이상의 부모클래스가 같은 메소드 시그니처를 가져서 컴파일 시 어떤 부모의 메소드를 상속받아야하는지 알 수 없는 문제

JAVA omits many rarely used, poorly understood, confusing features of C++ that in our experience bring more grief than benefit. This primarily consists of operator overloading, multiple inheritance, and extensive automatic coercions.

즉, 굳이 내보려 두어 혼란을 가중시키고 활용빈도가 상당히 떨어지는 c++의 여러 특성들을 방치하는 것보다 원천적으로 지원하지 않음으로서 이득이 더 크다고 판단하였기 때문이었고 다중 상속이 이런 특성에 포함되었기 때문이다