【发布时间】:2014-12-31 17:16:30
【问题描述】:
当我发现这个令人困惑的练习时,我正在处理 SCJP6 转储:
给定在两个不同文件中定义的类:
package packageA;
public class Message {
String getText() { return “text”; }
}
还有:
package packageB;
public class XMLMessage extends packageA.Message {
String getText() { return “<msg>text</msg>”;}
public static void main(String[] args) {
System.out.println(new XMLMessage().getText());
}
}
执行 XMLMessage.main 的结果是什么?
A. text
B. Compilation fails.
C. <msg>text</msg>
D. An exception is thrown at runtime.
答案是:B,但我不明白为什么;我认为答案应该是C。
【问题讨论】:
-
您尝试编译示例代码了吗?
-
你试过运行它吗?
-
你确定 2.5 行的某处没有
@Override吗?因为它确实编译和打印<msg>text</msg>。 -
不,我只是编译它,它编译时带有警告,所以我想知道为什么它只有警告而不是编译器错误
-
我只是运行它,它运行良好
标签: java inheritance polymorphism scjp ocpjp