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

作者: povertytrap (povertytrap)   2016-04-13 11:54:48
想請問各位大大 這程式碼輸出結果為甚麼是這樣?
就物件導向程式而言,現有如下的繼承關係的類別。
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 因為他是繼承上層類別且沒複寫
請問我這樣想有錯嗎?
作者: cooper6334 (庫波)   2016-04-13 12:07:00
裡面都沒有"Daughter" 也能印出來也是滿神奇的題目出錯了吧
作者: tina13226 (天才宴)   2016-04-13 12:18:00
想的沒錯
作者: povertytrap (povertytrap)   2016-04-13 12:21:00
所以是我對吼!!!!!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com