[問題] 請問這題顯示結果一下

看板java作者 (povertytrap)時間8年前 (2016/04/13 11:54), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
想請問各位大大 這程式碼輸出結果為甚麼是這樣? 就物件導向程式而言,現有如下的繼承關係的類別。 class GrandFather{ String name = "GrandFather"; String getName(){return name;} String whereIam(){return"class GrandFather";} } class Father extends GrandFather{ String getName(){return name;} String whereIam(){return"class Father";} } class Son extends Father{ String name = "Son"; String getName(){return name;} String whereIam(){return"class Son";} } class Daughter extends Father{ String getName(){return name;} String whereIam(){return"class Daughter";} } 於其他類別方法中使用如下的statement: Father f1 = new GrandFather(); Father f2 = new Son(); Father f3 = new Daughter(); System.out.println(f2.getName()); System.out.println(f3.getName()); System.out.println(f2.whereIam()); System.out.println(f3.whereIam()); 請問編譯執行後,會顯示什麼結果?如為語法有誤或執行時期發生中斷,請說明原因, 並將該statement予以忽視,然後說明可以正確執行statement所產生的結果。 這是輸出結果 Son Daughter class Son class Daughter 我知道Father f1 = new GrandFather(); 一定錯 因為子類物件宣告不可用父類new 主要是後面 System.out.println(f3.getName()); 在Daughter中並沒有設定name為何輸出會是Daughter? 我預期這行應該是GrandFather 因為他是繼承上層類別且沒複寫 請問我這樣想有錯嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.25.119.5 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1460519691.A.294.html

04/13 12:07, , 1F
裡面都沒有"Daughter" 也能印出來也是滿神奇的
04/13 12:07, 1F

04/13 12:08, , 2F
題目出錯了吧
04/13 12:08, 2F

04/13 12:18, , 3F
想的沒錯
04/13 12:18, 3F

04/13 12:21, , 4F
所以是我對吼!!!!!!!
04/13 12:21, 4F
文章代碼(AID): #1N3SCBAK (java)