>Java >java지도 시간 >Java는 다중 상속을 지원합니까?

Java는 다중 상속을 지원합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 18:50:02327검색

Does Java Support Multiple Inheritance?

Java 상속: 단일 상속과 다중 상속

취업 면접 중에 지원자는 Java가 다중 상속을 지원하는지 질문을 받았습니다. 후보자는 Java의 각 클래스가 Object를 확장하고 "클래스 A가 클래스 B를 확장합니다"와 같은 다른 클래스를 확장한다는 점을 언급하면서 "아니요"라고 답했습니다. 이는 클래스 A가 클래스 B와 객체 모두에서 상속한다는 의미이며 이는 다중 상속이 아닌 다중 레벨 상속으로 간주됩니다. .

그러나 면접관은 클래스 B가 Object를 확장하므로 클래스 A에서 클래스 B를 확장하면 클래스 A가 클래스 B와 Object 모두에서 상속되어 본질적으로 다중 상속을 구성한다고 주장하며 이 답변에 이의를 제기했습니다.

해명

면접관의 구체적인 예에 ​​비추어 볼 때 후보자의 답변이 대체로 정확했습니다. 다중 상속은 클래스가 관련되지 않은 두 개 이상의 기본에서 상속하여 상속 계층 구조에 "다이아몬드" 구조를 만드는 상황을 의미합니다.

Java의 다중 수준 단일 상속

그러나 Java에서는 상속이 여러 수준의 단일 수준입니다. 클래스 A는 클래스 B를 확장하고, 클래스 B는 다시 Object를 확장합니다. 이는 상속 체인을 생성하지만 클래스 A는 클래스 B에서 직접 상속하고 객체에서는 간접적으로만 상속합니다. 이는 다중 상속이 아닙니다.

인터페이스 및 "기본" 메서드

Java는 기존 다중 상속을 지원하지 않지만 인터페이스와 인터페이스에 대한 "기본" 메서드가 있습니다. (Java 8에서 도입됨) 이 기능을 사용하면 클래스가 여러 인터페이스를 구현하고 각각의 기본 메서드를 상속할 수 있습니다.

그러나 이는 다음과 같은 이유로 여전히 다중 상속이 아닙니다.

  • "super" 유형은 기본 클래스(단일 계보)
  • 인터페이스에는 초기화를 관리하는 생성자가 없습니다
  • 기본 클래스의 생성자는 두 번 이상 상속되지 않습니다
  • 동일한 기본 메소드가 여러 개 있는 경우 서명이 다른 인터페이스에서 상속되면 컴파일 시간 또는 런타임 오류가 발생합니다.

결론

Java의 상속 모델은 여러 수준의 단일 상속을 허용합니다. "extends" 키워드와 기본 메소드와의 인터페이스를 통해 "다중 상속 라이트" 형태를 제공합니다. 그러나 이러한 개념을 클래스가 관련되지 않은 여러 기반에서 상속할 수 있는 실제 다중 상속과 구별하는 것이 중요합니다.

위 내용은 Java는 다중 상속을 지원합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.