今天有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()