gpt4 book ai didi

java - 两个接口(interface)中具有相同签名但返回类型不同的方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:38 25 4
gpt4 key购买 nike

我有两个接口(interface):

interface S {
public String m1();
}

interface O {
public Object m1();
}

我决定在类 Test 中同时实现 O 和 S:

class Test implements O, S {

}

我的问题:

为什么我必须只实现方法 public String m1() 而不是其他的?其次,为什么我不能实现 public Object m1() 而不是 public String m1()

最佳答案

Java 允许您使用协变返回类型来覆盖方法。

这意味着覆盖方法可以返回在覆盖方法上声明的类型的子类型。

在这种情况下,StringObject 是协变的;由于所有 String 也是 Object,因此它是实现 O.m1() O.m2().

但是在一个类中不能有两个具有相同签名的方法(返回类型不是签名的一部分)。因此,当返回类型兼容时,您最多只能实现 1,如此处所示。 (如果它们不兼容,你会得到一个编译器错误)。

关于java - 两个接口(interface)中具有相同签名但返回类型不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52238795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com