向上造型后,关于调用重写后方法的返回值

前几天写代码的时候,遇到了向上造型后,调用重写方法的返回值问题,就仔细查阅了一下资料。

在java5之前,重写方法的返回值类型只能与父类方法的返回值类型一致,但在java5的时候因为协变返回类型的存在,重写的方法的返回类型可以是原方法返回类型的子类(即我们通常说的重写方法的返回值类型要小于或等于父类)。但是当我们向上造型后调用重写的方法,还是应该用原方法的返回值类型去接收返回值。


例如:

Workbook 是一个接口,HSSFWorkbook是Workbook的实现类

Workbook中有一个方法Sheet createSheet(String sheetname),返回值类型是Sheet

HSSFWorkbook中实现类的方法为public HSSFSheet createSheet(String sheetname) {     ......      },返回值为HSSFSheet

其中Sheet是一个接口,HSSFSheet是Sheet的一个实现类

当我们向上造型:Workbook wb = new HSSFWorkbook();    

调用wb.createSheet()方法时

Sheet sheet=wb.createSheet()       //正确

HSSFSheet sheet1=wb.createSheet()//错误,会提示我们改为HSSFSheet sheet1=(HSSFSheet)wb.createSheet();

所以,证明在向上造型的情况下,即使调用的是重写方法,但是返回值类型还是父类方法的返回值类型。



个人理解,如有错误,欢迎指正!谢谢!



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值