巢狀繼承

巢狀繼承


  public A()
  {
    System.out.println("A");
  }  
}
class B extends A{
  public B(){
    System.out.println("B");
  }
}
public class C extends B{
  A a=new A();
  public C(){
                           
    System.out.println("C");
  }
  public static void main(String arg[]){
    C c=new C();
  }
}

output=ABAC

程式執行流程:
1.在C c=new C();的時候就進入C()建構子了
2.然後執行C()建構子裡的super();這行就是去執行B()建構子
3.進到B()建構子後執行super();進到A()的建構子
4.接著執行System.out.println("A");印出A
5.再回到B()建構子執行System.out.println("B");印出B
6.接著發現有物件變數 a 需要初始化 → 印出 A
7.最後才是執行System.out.print("C");印出C