【发布时间】:2015-07-16 00:47:02
【问题描述】:
假设我们有如下三个类
public class Woo extends Zoo {
public String one() {
return "wee" + this.two();
}
public String extra() {
return "eek" + this.one();
}
}
public class Zoo {
public String one() {
return "zee";
}
public String two() {
return "zow";
}
}
public class Yoo extends Woo {
public String two() {
return "yow";
}
}
假设我们做了以下变量声明:
Zoo z = new Yoo();
的输出是什么
System.out.println(z.one() + " " + z.two() + " " + z.extra());
是吗?
我的编译器不允许我这样编译
Zoo 中没有任何方法有额外的
但我认为由于z 的实际类型是Yoo 类,并且由于Yoo 继承了Zoo 和Woo 类的所有方法,所以z.extra() 可以工作....?
【问题讨论】:
-
在编译时,z是Zoo类型的,它没有'extra'方法..
标签: java polymorphism dynamic-binding