我是新來的java。最近我看到一些代碼,這是類同的:當訪問繼承成員時,「this」和「super」之間的區別
class A {
protected int myInt;
public static void main(String[] args) {
B b = new B();
b.myFunction();
}
}
class B extends A {
public void myFunction() {
this.myInt = 10;
}
}
據我所知,創建一個子類的實例時,其父的一個實例被創建爲好。基類的所有受保護和公共成員都可以從子類訪問。 如果我覆蓋myInt
,將會有this.myInt
到super.myInt
之間的差異,因爲每個類將有它自己的myInt
(B將有權訪問兩者)。
所以,我的問題是:如果我不覆蓋myInt
,哪種形式更可取,this.myInt
或super.myInt
?
您不覆蓋字段。而'B'也是'A',但只有一個實例被創建 - 不是兩個。 –
可能的重複http://stackoverflow.com/questions/4023344/difference-between-this-andsuper-keywords-in-java –
通過@ElliottFrisch澄清評論:如果您還在'B'中聲明'myInt',不要重寫*字段,你在* A中隱藏*同名字段。請參閱[Java™教程 - 隱藏字段](https://docs.oracle.com/javase/tutorial/java/IandI/hidevariables.html)。 – Andreas