Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)에서 다중 상속을 지원하지 않는 이유

자바에서는 하나의 클래스가 둘 이상의 클래스를 동시에 상속(extends)하는 것이 허용되지 않습니다. 따라서 아래와 같은 코드는 문법적으로 잘못된 코드이며, 컴파일 시 오류가 발생합니다.

잘못된 코드 예제

public class extends Animal, Mammal{}

다만, 자바에서는 하나의 클래스가 하나 이상의 인터페이스(interface)를 구현(implements)하는 것은 가능합니다. 이러한 인터페이스 메커니즘이 자바가 다중 상속의 한계를 효과적으로 보완할 수 있도록 도와주는 핵심 역할을 합니다.

다중 상속이 금지된 이유: 모호성 방지

그렇다면 자바는 왜 다중 상속을 지원하지 않을까요? 그 핵심적인 이유는 바로 모호성(ambiguity)을 방지하기 위해서입니다.

예를 들어, B라는 클래스가 A 클래스와 C 클래스 두 개를 동시에 상속한다고 가정해 봅시다. 만약 A와 C 두 클래스 모두에 동일한 이름의 display() 메서드가 정의되어 있다면 어떻게 될까요?

이 경우 자바 컴파일러는 B 클래스가 어느 쪽의 display() 메서드를 상속받아야 하는지 판단할 수 없게 됩니다. 이처럼 상속 구조에서 발생할 수 있는 충돌과 혼란을 사전에 차단하기 위해, 자바는 언어 설계 단계부터 다중 상속을 허용하지 않기로 결정했습니다.