本文主要是介绍Java里面Override的返回值是否必须和父类相同?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们看一下如下的程序代码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以后,系统允许返回值和父类不同了,但必须是其子类才可以。这个问题我也是在实际编程时才注意到的。
当然,目前的大部分书籍还是老版本的,如果对大家产生了什么疑问,那么自己写一个代码亲自验证一下才是正确的。书籍里的知识有一些随着时间的流逝,肯定会过时的。
这篇关于Java里面Override的返回值是否必须和父类相同?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!