2023-09-20|閱讀時間 ‧ 約 3 分鐘

Java 不支持multi-inheritance

今天有A, B, C 三個 class

A class有 eat(), drink(), cry() 三個method

B class有 dance(), cry() 兩個method

C class有 dream() 一個method


當C extends A

以C 創建出來的物件將能使用dream、eat、drink、cry等四個method


當C extends B

以C 創建出來的物件將能使用dream、dance、cry等三個method


但如果C extends A,B

以C 創建出來的物件將能使用本身的dream method

和 A 的eat、drink、cry等三個method

還有 B 的dance、cry等兩個method

問題就是此時會不知道cry method要採用A還是B的

所以Java不能同時多重繼承


但是可以多層繼承

class A {
public void eat(){

}
public void drink(){

}
public void cry(){
System.out.println("cry in A");
}
}
class B extends A{
public void dance(){

}
public void cry(){
System.out.println("cry in B");
}
}

class C extends B{
public void dream(){

}
}

public class Demo {
public static void main(String[] args) {

C c = new C();
c.cry();
}

C extends B

然後B 再extends A

程式31行執行結果將會是 "cry in B"

會按照順序一步一步往上層問(父類別)是否有該method

一問到肯定答案就不會再往上問

所以才會執行B class的 cry() 而不是 A class的 cry()

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.