簡體   English   中英

當您使用super和此關鍵字調用替代方法時會發生什么?

[英]What happen when you call an override method using super and this keyword?

public class Superclass {



    void method0(){
        System.out.println("superclass");
    }
}


public class Subclass extends Superclass{

    void method0(){
        System.out.println("subclass");
    }

    void method1(){
        super.method0();
    }

    void method2(){
        this.method0();
    }
}


public class RunClass {

    public static void main(String[] args){
        new Subclass().method1();
        new Subclass().method2();
    }
}

上面的代碼打印出來

superclass
superclass

我希望它能打印出來

superclass
subclass

this.method0()不是引用子類中的method0並打印出子類而不是超類嗎?

super表示父類的實例。 this代表當前類的實例。 它將打印
超類
子類

我運行了您的代碼,它給了我

superclass
subclass

這個應該打印的東西似乎還可以

new Subclass().method1();

執行Subclass實例的method1() ,后者依次調用super.method0(); 即父類實例的method0()Superclass實例method0()

new Subclass().method2();

執行Subclass實例的method2() ,該實例又調用this.method0(); 即該實例的method0()Subclass實例method0()

super被使用,而訪問父類的實例成員this是用來訪問當前類的成員。

首先,它可以打印出您的期望。

第二,

this.method0()不是引用子類中的method0並打印出子類而不是超類嗎?

this =>引用當前對象,使用它就可以使用它(一般來說,指向自身的指針種類)

super =>引用層次結構中的超類對象,通常用於訪問子類中的隱藏成員

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM