作者conanist (QQ)
看板java
標題[問題]關於多型的成員變數
時間Tue Jul 28 19:26:34 2009
以下式程式碼
class Foo{
public int a=4;
public void addFive(){
a+=5;
System.out.print("F");
}
}
public class E62 extends Foo {
public int a=8; //重新定義變數
public void addFive(){
this.a+=5;
System.out.print("b");
}
public int getValue(){
System.out.print("BB");
return this.a;
}
public static void main(String[] args) {
// TODO, add your application code
Foo f =new E62();
f.addFive();
System.out.println(f.a);
}
}
問題出自SCJP 6.0 認證教戰手冊 黃彬華著 第62題
在多型的觀念裡面 我們都只討論函式的複寫
但是如果函式用到成員變數時 到底要用哪一個呢?
是父類別的 型別 還是子類別的實體
這題的答案跑程式是b4 但是 如果把E62裡的 int a=8; 註解的話 答案是b9
我不太明白 f.a的原理
希望有人可以解惑一下 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.121.234
→ pico2k:這是繼承,不是多型 07/28 19:46
→ pico2k:去查一下java downcast的東東吧 07/28 20:29
→ pico2k:是upcast...XD 07/28 20:35
→ adrianshum:樓上說的都不是. 找關於 shadowning 的東西看看吧 07/29 10:39
推 legnaleurc:就是單純名稱被覆蓋而已,沒有多型在作用 07/29 11:32
推 szss8765:這好像有人問過了...這好像是:上面某篇問的... 07/29 11:45