gpt4 book ai didi

java - 接口(interface)多重继承的冲突方法

转载 作者:行者123 更新时间:2023-11-29 05:24:26 24 4
gpt4 key购买 nike

我有以下接口(interface)(在 Java 中,但它更像是一个面向对象的问题,而不是特定于语言的问题,我对任何语言的答案都感兴趣)

public interface A {
int foo();
}

public interface B {
char foo();
}

如果我现在要创建以下类:

public class C implements A,B{
public int foo() {
return 0;
}
public char foo() {
return 0;
}
}

这不会编译,因为方法有冲突。有什么方法可以使这项工作或具有相同含义的东西(当然不修改 A 或 B,那将是微不足道的)?

最佳答案

不,返回类型不能成为使方法签名唯一的决定因素,因为您不需要将返回值分配给任何东西,编译器不知道在那种情况下该怎么做。

具体例子:

...
C object = new C();
object.foo();
...

我刚刚调用了哪个 foo ?说不清。

要完成这项工作,您需要在接口(interface)方法中使用不同的方法名称或不同的参数类型。

编辑:假设您无法控制接口(interface) A 和 B(库类或类似类),如果我想在同一个类中实现它们,我会采用以下解决方案:

public class C {
private objectA = new AImpl();
private objectB = new BImpl();

// Work with the objects here

private class AImpl implements A {
public int foo() {
// ...
}
}

private class BImpl implements B {
public char foo() {
// ...
}
}
}

关于java - 接口(interface)多重继承的冲突方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256406/

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