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   
到底哪个是对的?书中 印刷错误?

解决方案 »

  1.   

    应该是打印:
    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 版本问题应该不会造成输出结果错误啊!
      

  2.   

    觉得不可能,但是应该和jdk没关系吧
      

  3.   

    楼主啊,好好检查一下你的代码Grain process(){Wheat peocess(){你这莫写怎能叫重写方法阿改成
    Wheat process(){你再看看输出什莫
      

  4.   

    .......原来这原因昂,我说呢为什么 m = new WheatMill();m.process()
    吊用的是Mill中的process()方法