子類的構造函數中不是必須使用super,在構造函數中,如果第一行沒有寫super(),編譯器會自動插入.但是如果父類沒有不帶參數的構造函數,或這個函數被私有化了(用private修飾).此時你必須加入對父類的實例化構造.而this就沒有這個要求,因為它本身就進行實例化的構造.
如果父類的構造函數是無參的,那子類構造函數會在第一行默認調用super().
下面這種情況是必須調用super()的:
1 public class Father { 2 public String name; 3 public Father(String name) { 4 this.name = name; 5 } 6 } 7 8 class Son extends Father{ 9 public Son(String name) { 10 super(name); 11 } 12 //必須調用,否則他會默認調用父類的無參構造函數,而父類的無參構造函數已經被有參的覆蓋,所以找不到