您的位置:首页 > 编程语言 > Java开发

Java里面Override的返回值是否必须和父类相同?

2009-06-15 06:20 225 查看
我们看一下如下的程序代码Test.java

class Base {
  public Base newInstance() {
    return new Base();
  }
  public Base newInstance2() {
    return new Base();
  }
}
class Test extends Base {
  // 返回值不同
  public Test newInstance() {
    return new Test();
  }
  // 返回值相同
  public Base newInstance2() {
    return new Test();
  }
}



这段代码到底对不对呢?能否编译通过呢?

在JDK5.0以前,Override要求参数列表和返回值必须完全相同,否则编译不通过,所以在jdk 1.3、 1.4里面,这个代码是错误的。 Test里面的newInstance 的返回值必须修改为为父类完全相同的Base才可以。

而在JDK1.5以后,系统允许返回值和父类不同了,但必须是其子类才可以。这个问题我也是在实际编程时才注意到的。

当然,目前的大部分书籍还是老版本的,如果对大家产生了什么疑问,那么自己写一个代码亲自验证一下才是正确的。书籍里的知识有一些随着时间的流逝,肯定会过时的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐