Java中Super()與this()

Java中Super()與this()

super指父類,this指當(dāng)前對象
super()與this()都必須在構(gòu)造函數(shù)第一行,一個構(gòu)造函數(shù)不能同時有super()和this(),子類的構(gòu)造函數(shù)都隱式地調(diào)用super(),super()與this()都不能在static環(huán)境中使用(父類的static方法不能被繼承),從本質(zhì)上講,this是一個指向本對象的指針,super是一個java關(guān)鍵字。

舉例說明:

父類:

public class Father {
    public Father(){
        System.out.println("Father");
    }


    public Father(String str) {
        System.out.println(str+" in Father");
    }
}

子類:

public class Son extends Father {
    public Son(){
        //隱式調(diào)用super()
        System.out.println("son");
    }

    public Son(String str){
        System.out.println(str+" in Son");
    }

    public static void main(String[] args){
        Son son = new Son();
    }
}

輸出結(jié)果是:

Father

Son


父類:

public class Father {
    public Father(){
        System.out.println("Father");
    }


    public Father(String str) {
        System.out.println(str+" in Father");
    }
}

子類:

public class Son extends Father {
    public Son(){
        this("Test");
        //這里由于this的存在,不會再隱式調(diào)用super()
        System.out.println("son");
    }

    public Son(String str){
        //仍然隱式調(diào)用super(),而不是隱式調(diào)用super(str)
        System.out.println(str+" in Son");
    }

    public static void main(String[] args){
        Son son = new Son();
    }
}

輸出結(jié)果是:

Father

Test in Son

son


父類:

public class Father {
    public Father(){
        System.out.println("Father");
    }


    public Father(String str) {
        System.out.println(str+" in Father");
    }
}

子類:

public class Son extends Father {
    public Son(){
        this("Test");
        //這里由于this的存在,不會再隱式調(diào)用super()
        System.out.println("son");
    }

    public Son(String str){
        super(str);
        //顯示調(diào)用super(str),而不再隱式調(diào)用super()
        System.out.println(str+" in Son");
    }

    public static void main(String[] args){
        Son son = new Son();
    }
}

輸出結(jié)果是:

Test in Father

Test in Son

son

父類中如果存在成員函數(shù),可在子類中使用super.function()的形式調(diào)用父類的成員函數(shù)function().

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容