[問題] 關於JAVA屬性覆寫的機制

看板java作者 (www)時間14年前 (2011/05/30 21:28), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
各位好: 程式碼如下 class Father{ String name = "Father"; String greeting(){ return "class Father"; } } class Son extends Father{ String name = "Son"; String greeting(){ return "class Son"; } void foo(){ System.out.println(((Son)this).name); System.out.println(((Father)this).name); System.out.println(((Son)this).greeting()); System.out.println(((Father)this).greeting()); } } public static void main(String[] args){ new Son().foo(); } ANS: Son Father class Son class Son 疑惑: 請問為什麼((Father)this).name,轉型成為Father類別時,是列印出Father類別的 屬性name;而(Father)this).greeting(),卻會因為覆寫機制列印出class Son。 屬性不是也會覆寫嗎?new Son()時,相同都有String name不是會覆寫過去嗎? 謝謝解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.167.23

05/30 22:42, , 1F
parent field不會被同名的child field "override"
05/30 22:42, 1F

05/30 22:44, , 2F
正確一點的用字應該叫"shadow",parent field單純被隱藏起來
05/30 22:44, 2F

05/30 23:45, , 3F
推樓上回覆:)
05/30 23:45, 3F

05/30 23:52, , 4F
THX
05/30 23:52, 4F
文章代碼(AID): #1DuvjnET (java)