当前位置: 首页 > 图文教程 > 认证考试 > java认证 > Java认证:Override的返回值问题

java认证
软件工程之Java实现策略
讲述java语言中内部类的研究
简单介绍log4j一般的使用步骤
入门:Java语言中常见的十大误解
入门:Java代码编写的一般性指导
编写跨平台Java程序注意事项
java语言的网络功能与编程
java语言的文件操作方法
Java程序性能和速度优化实例
异常问题在Java编程中处理的优劣
处理Java及其相关字符集编码的问题
解读Java语言灵巧指针与垃圾回收
用于Java的SCA客户机和实现模型
开发中对于Java中文问题的几条分析原则
JAVA深入了解:JavaBeans 增加XPath功能
网络方式安装Linux(CentOS)系统的方法
一篇介绍 Java Socket 编程的经典文章
Java程序中用Servlet容器实现程序监听
使用Java进行图像处理 图像编码输出
JAVA认证:SCJP310-055中文考纲

java认证 中的 Java认证:Override的返回值问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 86 ::
收藏到网摘: n/a

  我们看一下如下的程序代码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();
  }
  }
  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以后,系统允许返回值和父类不同了,但必须是其子类才可以。这个问题我也是在实际编程时才注意到的。