[J2SE] 多型與轉型

看板java作者 (喬巴)時間18年前 (2008/02/16 17:13), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/7 (看更多)
class Father{ String name = "Father"; String getName(){ return name; } String greeting(){ return "class Father"; } } class Son extends Father{ String name = "Son"; String greeting(){ return "class Son"; } void foo(){ System.out.println((Son)this).greeting(); System.out.prtinln((Father)this).greeting(); } } 要問印出來的訊息 ((Son)this).greeting() 是指 Son 類別的 greeting(), 所以訊息為 class Son. ((Father)this).greeting() 是指 Son 類別的 greeting(), 但是為 Father 型別, 出現的訊息不應該跟著轉型後的型別走嗎? 怎麼不是 class Father 而是 class Son ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.196.131

02/16 18:57, , 1F
當然是跟你的實體走 不會跟著型態走
02/16 18:57, 1F

02/16 18:58, , 2F
型態決定你可以呼叫什麼 實體決定你呼叫的是什麼
02/16 18:58, 2F

02/16 20:37, , 3F
也就是說實體是實體,樣子是樣子
02/16 20:37, 3F
文章代碼(AID): #17jgbCdX (java)
討論串 (同標題文章)
文章代碼(AID): #17jgbCdX (java)