關(guān)于Java中的super()方法

????在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),否則會報錯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容