1. 默認(rèn)構(gòu)造方法:

  默認(rèn)構(gòu)造方法是沒有參數(shù)的構(gòu)造方法,可以簡單的分為兩種:

  (1) 隱含的默認(rèn)構(gòu)造方法

  (2) 程序顯式定義的構(gòu)造方法

  在java語言中,每個類至少有一個構(gòu)造方法,為了保證這一點,如果用戶定義的類中沒有構(gòu)造方法,那么java語言將自動提供一個隱含的默認(rèn)構(gòu)造方法,該構(gòu)造方法沒有參數(shù),用public修飾,沒有返回值,并且方法體為空,例如:

  public ClassName(){}

  當(dāng)然在程序中也可以明確的定義默認(rèn)構(gòu)造方法,

  如果在類中定義了一個或者多個構(gòu)造方法,并且所有的構(gòu)造方法都有參數(shù),這個類就失去了默認(rèn)的構(gòu)造方法。如果想保留默認(rèn)的構(gòu)造方法,必須顯式的定義出來。例如:

  public class Test(){

  public Test(String name){System.out.println(name);};

  public Test(int age){System.out.println(age);}

  } 對于這個類,如果要定義一個對象Test test = new Test();這個就是錯誤的,因為沒有這個構(gòu)造方法,如果想這樣定義,必須顯式的定義默認(rèn)構(gòu)造方法。

  2. 子類調(diào)用父類的構(gòu)造函數(shù)

  父類的構(gòu)造函數(shù)不能被子類繼承,但是在子類對象被創(chuàng)建時,如果不顯式調(diào)用父類的構(gòu)造方法,這是子類會調(diào)用父類的默認(rèn)構(gòu)造方法。如果要調(diào)用父類的其他構(gòu)造方法(帶參構(gòu)造方法),必須出使用super顯式的指

  使用super必須遵循一下規(guī)則:

  (1) 在子類的構(gòu)造方法中不能直接使用父類的構(gòu)造方法名稱直接調(diào)用,而必須使用super語句

  (2) 如果在子類的構(gòu)造方法中時用super調(diào)用父類的構(gòu)造方法,他必須作為構(gòu)造方法的第一條語句出現(xiàn)。

  總結(jié)

  在創(chuàng)建子類的對象時,java虛擬機首先執(zhí)行父類的構(gòu)造方法,然后再執(zhí)行子類的構(gòu)造方法,在多重繼承的情況下,將從最頂層的類的構(gòu)造方法開始執(zhí)行,然后依次執(zhí)行各個類的構(gòu)造方法。