看板 java 關於我們 聯絡資訊
各位先進大家好 希望大家幫忙解答小弟的問題 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)
ken915007:不知~這篇對你有沒有用… http://0rz.tw/TQe2w 12/27 02:52