[英]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.