[問題]關於多型的成員變數

看板java作者 (QQ)時間16年前 (2009/07/28 19:26), 編輯推噓2(205)
留言7則, 5人參與, 最新討論串1/1
以下式程式碼 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
去查一下java downcast的東東吧
07/28 20:29, 2F

07/28 20:35, , 3F
是upcast...XD
07/28 20:35, 3F

07/29 10:39, , 4F
樓上說的都不是. 找關於 shadowning 的東西看看吧
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
文章代碼(AID): #1ARk1hZC (java)