其中您訪問210取決於您使用訪問它的東西的類型。 this
始終具有類的類型的方法或構造屬於 —即在Fish
的方法/構造,this
是Fish
類型。在Shark'
的方法/構造函數中,this
的類型爲Shark
。 (這裏只有一個對象,它結合了Fish
和Shark
[沒錯,它確實有兩個名稱相同的單獨的字段]的特徵;我們談論的是對它的引用類型。)
(注意,這是不同實例變量(如age
;又名「田」),比它是實例方法在Java中,方法是多態的,實例變量都沒有。)
左右的時間內Fish
代碼, this.age
是Fish
的age
。在Shark
代碼中,this.age
是Shark
的代碼age
。
例如爲:
public class Fish {
int numberOfFins;
int age;
public Fish(int age) {
this.age=age; // Sets Fish#age
}
}
public class Shark extends Fish {
private int age;
public Shark(int age) {
super(age);
this.age=age; // Sets Shark#age
}
}
這並不只適用於this
,它適用於變量爲好。看看下面main
(並注意我設置兩個age
s到不同的值; Shark
的age
兩倍Fish
的age
):當你出現在Java中,FWIW我要開始了
class Fish {
int numberOfFins;
int age;
public Fish(int age) {
this.age = age; // Sets Fish#age
}
}
public class Shark extends Fish {
private int age;
public Shark(int age) {
super(age);
this.age = age * 2; // Sets Shark#age
}
public static void main(String[] args) {
Shark s = new Shark(10);
Fish f = s;
System.out.println(f.age); // 10
System.out.println(s.age); // 20
}
}
**強**推薦使用任何幾種典型的縮進和支架放置方式,**不要**上面的縮進和支架放置。我在回答中使用了其中的一個標準。 –