1. 默認構造方法:
默認構造方法是沒有參數的構造方法,可以簡單的分為兩種:
(1) 隱含的默認構造方法
(2) 程序顯式定義的構造方法
在java語言中,每個類至少有一個構造方法,為了保證這一點,如果用戶定義的類中沒有構造方法,那么java語言將自動提供一個隱含的默認構造方法,該構造方法沒有參數,用public修飾,沒有返回值,并且方法體為空,例如:
public ClassName(){}
當然在程序中也可以明確的定義默認構造方法,
如果在類中定義了一個或者多個構造方法,并且所有的構造方法都有參數,這個類就失去了默認的構造方法。如果想保留默認的構造方法,必須顯式的定義出來。例如:
public class Test(){
public Test(String name){System.out.println(name);};
public Test(int age){System.out.println(age);}
} 對于這個類,如果要定義一個對象Test test = new Test();這個就是錯誤的,因為沒有這個構造方法,如果想這樣定義,必須顯式的定義默認構造方法。
2. 子類調用父類的構造函數
父類的構造函數不能被子類繼承,但是在子類對象被創建時,如果不顯式調用父類的構造方法,這是子類會調用父類的默認構造方法。如果要調用父類的其他構造方法(帶參構造方法),必須出使用super顯式的指
使用super必須遵循一下規則:
(1) 在子類的構造方法中不能直接使用父類的構造方法名稱直接調用,而必須使用super語句
(2) 如果在子類的構造方法中時用super調用父類的構造方法,他必須作為構造方法的第一條語句出現。
總結
在創建子類的對象時,java虛擬機首先執行父類的構造方法,然后再執行子類的構造方法,在多重繼承的情況下,將從最頂層的類的構造方法開始執行,然后依次執行各個類的構造方法。