[問題] 物件強制轉型

看板java作者 (life is magic)時間16年前 (2009/12/27 01:20), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
各位先進大家好 希望大家幫忙解答小弟的問題 class F{ int a = 5; void change(){a++;} } public class S extends F{ int a = 6; void change(){a++;} public static void main(String[] s){ F f = new S(); f.change(); System.out.print(f.a); // 印出5 System.out.print(((S)f).a); // 印出7 } } 在 F型態 的 f 指派 S實體 後,F觀點執行change(), 理論上執行override的change(),但F執行change()後, 是更改了 S實體 中的變數a=6,所以印出f.a時,仍為5。 那麼在JVM中記憶體如何配置呢? 是有一個實體S,但是存在F的變數成員嗎? 所以有一份F的變數a,也有一份S的變數a嗎? 我這樣認知是對的嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: JeffMcBride 來自: 140.114.24.122 (12/27 01:35)

12/27 02:52, , 1F
不知~這篇對你有沒有用… http://0rz.tw/TQe2w
12/27 02:52, 1F
文章代碼(AID): #1BDaNYvc (java)
文章代碼(AID): #1BDaNYvc (java)