> Java > java지도 시간 > 자바는 왜 다중상속을 할 수 없나요?

자바는 왜 다중상속을 할 수 없나요?

(*-*)浩
풀어 주다: 2019-05-25 11:52:07
원래의
5137명이 탐색했습니다.

다중 상속이란 하위 클래스가 여러 상위 클래스로부터 동시에 상속받을 수 있어 여러 상위 클래스의 특성을 동시에 가지지만 단점이 크다는 의미입니다.

자바는 왜 다중상속을 할 수 없나요?

1. 하위 클래스가 상속한 상위 클래스의 멤버 변수가 동일한 경우 하위 클래스는 언제 사용할 상위 클래스를 결정할 수 없습니다. 변수를 참조합니다.

예:

public class classA  // 父类 classA
{
	private int num = 0;   
}
public class classB  // 父类 classB
{
   private int num = 1;
}

public class classC extends classA,classB // 子类 classC 继承于 classA 和 classB
{
	public static void main(String [] args)
	{
		classC obj = new classC();
		obj.print();    // 调用父类成员变量 num , 那 num 等于 0 还是 1 ?
	} 
	public void print()
	{
		System.out.println(super.num);
	} 
}
로그인 후 복사

2. 하위 클래스가 동일한 메서드를 가진 여러 상위 클래스를 상속하고 하위 클래스가 해당 하위 클래스를 재정의하지 않는 경우 메서드 메서드(재정의된 경우 하위 클래스의 메서드가 직접 사용됨)를 사용하면 이 메서드를 호출할 때 호출할 상위 클래스의 메서드를 결정할 수 없습니다.

예:

public class classA // 父类 classA
{
  public void fun()
  {
	   System.out.print("hello");
  } 
}
public class classB // 父类 classB
{
   public void fun()
   {
	   System.out.print("hello");
   }
}
public class classC extends classA,classB
{
   public static void main(String [] args)
   {
	   classC t = new classC();
	   t.print();
   }
   public void print()
   {
	   super.fun(); // 调用父类中 fun 方法,但由于classA、classB都有fun()方法,将无法确定使用
					// 哪个父类中的方法
   }
}
로그인 후 복사

따라서 Java는 단일 상속만 허용합니다. 즉, 하위 클래스는 하나의 상위 클래스에서만 상속할 수 있습니다. 그러나 하위 클래스의 기능을 확장하기 위해 Java는 다중 상속을 사용하지 않는 단점을 극복하기 위해 인터페이스를 사용합니다.

인터페이스는 특수 추상 클래스입니다. 인터페이스의 멤버 변수는 기본적으로 정적 최종 유형, 즉 상수이며 인터페이스의 메서드는 추상이며 메서드 본문이 없습니다.

특정 메소드는 호출 시 항상 구현 클래스의 메소드만 호출되므로(모호성 없음) 두 번째 단점은 없습니다. 다중 상속; 인터페이스에는 정적 상수만 있지만 정적 변수는 컴파일 타임에 호출 관계를 결정하므로 특정 충돌이 있어도 정적 변수를 참조할 때 오류가 발생합니다. 일반적으로 클래스를 사용합니다. 모호함을 피하기 위해 이름이나 인터페이스 이름을 직접 지정하므로 다중 상속의 첫 번째 단점은 존재하지 않습니다. 인터페이스가 여러 상위 인터페이스를 상속하는 경우에도 이러한 단점은 존재하지 않습니다.

위 내용은 자바는 왜 다중상속을 할 수 없나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿