首页 > Java > java教程 > Java 中的重写方法可以有不同的返回类型吗?

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

DDD
发布: 2024-11-25 02:35:16
原创
489 人浏览过

Can Overriding Methods in Java Have Different Return Types?

在 Java 中重写具有协变返回类型的方法

尽管普遍认为,重写的方法确实有可能在返回方面出现偏差Java 中的类型。更具体地说,Java 允许协变返回类型,从而允许重写方法拥有比被重写方法更精确的返回类型。这意味着重写方法的返回类型必须可分配给被重写方法的返回类型。

一个说明性示例是以下代码片段:

class ShapeBuilder {
    ...
    public Shape build() {
        ....
    }
}

class CircleBuilder extends ShapeBuilder{
    ...
    @Override
    public Circle build() {
        ....
    }
}
登录后复制

在此实例中,CircleBuilder类的build()方法重写了从ShapeBuilder继承的build()方法。至关重要的是,CircleBuilder 中的 build() 方法返回一个 Circle 对象,与 ShapeBuilder 返回的 Shape 对象相比,这是一种更具体的类型。

此行为在 Java 语言规范的第 8.4.5 节中进行了编码,其中明确指出“如果返回类型是引用类型,则相互覆盖的方法之间的返回类型可能会有所不同。”这一原则支持了协变返回的概念,即重写方法的返回类型可以专门化为子类型。

此外,该规范概述了两个方法之间的返回类型可替换性必须满足的特定条件:

  • Void 返回类型必须完全匹配。
  • 原始返回类型必须是相同。
  • 引用返回类型必须:

    • 是彼此的子类型。
    • 可以通过未经检查的转换转换为彼此的子类型。

Java 之前5、Java 坚持不变的返回类型。相比之下,协变返回类型在方法重写方面提供了更大的灵活性,使返回类型能够更紧密地与重写方法的具体实现保持一致。

以上是Java 中的重写方法可以有不同的返回类型吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板