gpt4 book ai didi

java - 两个接口(interface)指定具有相同签名的方法,但指定具有不同的行为?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:14 25 4
gpt4 key购买 nike

我有一些课public class myClass implements A, B其中 A 和 B 都包含一个方法 public int doSomething(); ,但是A.doSomething由接口(interface)指定执行与 B.doSomething 不同的操作.

我已阅读 Two interfaces with same method signature implemented in Java class ,但这并没有真正解决我的问题,因为这些方法被重写以做同样的事情,但正如我上面所说,我的问题是关于何时在接口(interface)中指定它们来做不同的事情。

例如,假设A.doSomething()应该返回 0 , 而 B.doSomething()应该抛出异常,并且违反任何一个都会导致应该将它们作为参数的方法出现问题。

有没有办法在java中做到这一点?如果是这样,人们实际上会怎么做?

最佳答案

根据 JLS (这与您想要的情况类似,可能不准确)

interface Fish { int getNumberOfScales(); }
interface StringBass { double getNumberOfScales(); }
class Bass implements Fish, StringBass {
// This declaration cannot be correct, no matter what type is used.
public ??? getNumberOfScales() { return 91; }
}

不可能声明一个名为 getNumberOfScales 的方法,其签名和返回类型与接口(interface) Fish 和接口(interface) StringBass 中声明的方法兼容,因为 < strong>一个类不能有多个具有相同签名的方法和不同的原始返回类型(§8.4)。

除非您通过添加代理(或)方法签名来更改您的设计,否则不可能达到您的预期。

关于java - 两个接口(interface)指定具有相同签名的方法,但指定具有不同的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13730419/

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