栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java重写方法的返回类型可以不同吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java重写方法的返回类型可以不同吗?

Java支持*协变返回类型的重写方法。这意味着重写的方法可能具有更特定的返回类型。也就是说,只要新的返回类型可分配给你要覆盖的方法的返回类型,就可以使用。

例如:

class ShapeBuilder {    ...    public Shape build() {    ....}class CircleBuilder extends ShapeBuilder{    ...    @Override    public Circle build() {    ....}

这在Java语言规范的8.4.5节中指定:

如果返回类型是引用类型,则返回类型在彼此覆盖的方法之间可能会有所不同。返回类型可替换性的概念支持协变返回,即返回类型到子类型的特殊化。

当且仅当满足以下条件时,返回类型为R1的方法声明d1才可以替换为返回类型为R2的另一个方法d2:

- 如果R1为空,则R2为空。

- 如果R1是原始类型,则R2与R1相同。

- 如果R1是引用类型,则:

- R1是R2的子类型,或者R1可以通过未经检查的转换(第5.1.9节)转换为R2的子类型,或者

  • R1 = | R2 |


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号