[問題]關於多型的成員變數
以下式程式碼
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
→
07/28 19:46, , 1F
07/28 19:46, 1F
→
07/28 20:29, , 2F
07/28 20:29, 2F
→
07/28 20:35, , 3F
07/28 20:35, 3F
→
07/29 10:39, , 4F
07/29 10:39, 4F
推
07/29 11:32, , 5F
07/29 11:32, 5F
推
07/29 11:45, , 6F
07/29 11:45, 6F
→
08/01 00:43, , 7F
08/01 00:43, 7F