看板 java 關於我們 聯絡資訊
以下式程式碼 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
tamamad:#1ANJRwnR 08/01 00:43