lass Grain{
public String toString(){
return "Grain";
}
}
class Wheat extends Grain{
public String toString(){
return "Wheat";
}
}
class Mill{
Grain process(){
return new Grain();
}
}
class WheatMill extends Mill{
Wheat peocess(){
return new Wheat();
}
}
public class CovariantReturn {
public static void main(String [] args){
Mill m = new Mill();
Grain g = m.process();
System.out.println(m.process());
m = new WheatMill();
System.out.println(m.process()); }
}首先这段程序我是摘自书中的例子
但书中打印的结果是:
Grain
Wheat我在eclipse 运行的结果却是:
Grain
Grain我用的jdk1.6
到底哪个是对的?书中 印刷错误?
Grain
Wheat
Mill m = new Mill();
Grain g = m.process();
System.out.println(m.process());这输出Grain
m = new WheatMill();
System.out.println(m.process());
这里产生了多态吧`调用的是是WheatMill中的process
打印的应该是Wheat()类的toString
不知道是不是这样,呵呵``我也是个新手
JDK 版本问题应该不会造成输出结果错误啊!
Wheat process(){你再看看输出什莫
吊用的是Mill中的process()方法