Java中的冲突接口方法

ars*_*jii 18 java overriding interface

可能重复:
接口实现中的方法名称冲突 - Java

如果我们需要实现两个接口,包含一个具有相同名称和参数但返回类型不同的方法,我们该怎么办?例如:

interface A {
    public int foo();
}

interface B {
    public double foo();
}

class C implements A, B {
    public int foo() {...}  // compilation error
}
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以解决这个问题?

Pet*_*rey 13

最简单的解决方案是始终返回doubleA,因为它可以存储每个可能的int值.

如果您不是选项,则需要使用继承替代方法.

class C {
    public A getA();
    public B getB();
}

C c = new C();
int a = c.getA().foo();
double b = c.getB().foo();
Run Code Online (Sandbox Code Playgroud)

  • 简单地返回double将无法解决问题......仍然存在编译器错误.您还需要在A中更改`foo()`的返回类型(如果A是以前存在的接口,则可能无法实现).您提出的其他解决方案可能更好. (2认同)

Sam*_*uel 12

你不能.Java通过名称及其参数唯一地标识方法,而不是它们的返回类型.