【发布时间】:2015-02-01 12:53:18
【问题描述】:
我有 2 个类,一个扩展了第二个并覆盖了父类的一些方法。当我打电话给fs.m(ff) 时,我得到了一个奇怪的结果,我不知道为什么会这样。类型 First fs 不应该访问类 Second 方法,即使我们为它们分配了一个新的 Second 对象,除非我们像那样转换它 - (Second) fs.m(ff)。谁能解释一下为什么这段代码会产生输出“覆盖”?
public class Main {
public static void main(String[] args) {
First ff = new First();
First fs = new Second();
Second ss = new Second();
System.out.println( fs.m(ff));
}
}
public class First {
public String m(First x){
return "default";
}
public String m(First x, First y){
return "default";
}
}
public class Second extends First{
public String m(Second x){
return "overload";
}
public String m(First x){
return "override";
}
public String m(First x, Second y){
return "???";
}
}
【问题讨论】:
标签: java inheritance overriding overloading