看板 java 關於我們 聯絡資訊
各位好: 程式碼如下 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
awert:parent field不會被同名的child field "override" 05/30 22:42
awert:正確一點的用字應該叫"shadow",parent field單純被隱藏起來 05/30 22:44
tomap41017:推樓上回覆:) 05/30 23:45
roadeat:THX 05/30 23:52