????在Java繼承中,經(jīng)常會碰上super()方法,今天恰好碰上,小小的研究了一下。
????在子類的構(gòu)造方法的第一行,必須是第一行調(diào)用super(),這樣就調(diào)用了父類的構(gòu)造方法,如果父類有多個不同的構(gòu)造方法,則根據(jù)調(diào)用super()時傳入的參數(shù)調(diào)用相應(yīng)的父類構(gòu)造方法。
public class Father {
public Father() {
System.out.println("Father的無參構(gòu)造方法");
}
public Father(int i) {
System.out.println("Father的有參構(gòu)造方法" + i);
}
}
class Son extends Father {
public Son() {
//super(2); //此時調(diào)用Father(int i)方法
super(); //此時調(diào)用Father()方法。其實這里不寫super()也可以起到同樣的作用,因為Java在調(diào)用子類構(gòu)造方法時默認調(diào)用父類的無參構(gòu)造方法,不過這兩種可行的前提是父類中還留有無參構(gòu)造方法。
System.out.println("Son的無參構(gòu)造方法");
}
}
????順便記錄下關(guān)于Java繼承中構(gòu)造方法的一些東西:
????在調(diào)用子類構(gòu)造方法時,不管調(diào)用的是有參還????是無參,如果沒有在第一行調(diào)用super(var xx),都會默認先調(diào)用父類的無參構(gòu)造方法。
如果父類中沒有無參構(gòu)造方法,子類中的構(gòu)造方法則必須調(diào)用super(var xx),否則會報錯。