作者povertytrap (povertytrap)
看板java
标题[问题] 请问这题显示结果一下
时间Wed Apr 13 11:54:48 2016
想请问各位大大 这程式码输出结果为甚麽是这样?
就物件导向程式而言,现有如下的继承关系的类别。
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://webptt.com/cn.aspx?n=bbs/java/M.1460519691.A.294.html
1F:推 cooper6334: 里面都没有"Daughter" 也能印出来也是满神奇的 04/13 12:07
2F:→ cooper6334: 题目出错了吧 04/13 12:08
3F:推 tina13226: 想的没错 04/13 12:18
4F:→ povertytrap: 所以是我对吼!!!!!!! 04/13 12:21