왜 자바는 다중 계승을 할 수 없습니까?
언어 디자인 시 선택으로 단순도(Simple)를 선택한 결과죠.
자바의 친부모James Gosling가 1995년 발간한 화이트페이퍼"Java: an Overview"를 인용했다.
Simple
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 (although it does have method overloading), multiple inheritance, and extensive automatic coercions.
다중상속이 가리키는 범위는'상태 다중상속','실장 다중상속','유형 다중상속'으로 나눌 수 있다.
공식 The Java TutoralsMultiple Inheritance of State, Implementation, and Type에서도 언급했듯이
이를 회피하는 기구로서 가상 계승(virtual inheritance)이라는 언어 기능을 제공하는 옵션은 비교적 복잡하고 이해하기 어려운 기능이다.C++는 프로그래머에게 선택의 자유를 줄 수 있지만 복잡하고 이해하기 어려운 것도 사실이다.
// C++言語における「状態(state)の多重継承」
class B { int m1; };
// クラスD1,D2ともにクラスBを継承
class D1 : public B { ... };
class D2 : public B { ... };
// D1,D2を多重継承したクラスXのインスタンスには
// 親クラスBのインスタンスが 2 つ含まれる。
// つまりm1変数という「状態」が2つ同時に存在する。
class X : public D1, D2 {};
자바 언어에서 프로그래머가 이런 어려운 선택을 하지 못하게 하는 사상이 있다.
Reference
이 문제에 관하여(왜 자바는 다중 계승을 할 수 없습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yohhoy/articles/java-multiple-inheritance텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)