看板 java 關於我們 聯絡資訊
想請問各位大大 這程式碼輸出結果為甚麼是這樣? 就物件導向程式而言,現有如下的繼承關係的類別。 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
cooper6334: 裡面都沒有"Daughter" 也能印出來也是滿神奇的 04/13 12:07
cooper6334: 題目出錯了吧 04/13 12:08
tina13226: 想的沒錯 04/13 12:18
povertytrap: 所以是我對吼!!!!!!! 04/13 12:21