[問題] 請問這題顯示結果一下
想請問各位大大 這程式碼輸出結果為甚麼是這樣?
就物件導向程式而言,現有如下的繼承關係的類別。
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
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