如果我有两个接口(interface),它们的用途完全不同,但具有相同的方法签名,我如何让一个类同时实现这两个接口(interface),而不会被迫编写一个用于两个接口(interface)的方法并编写一些复杂的逻辑在方法实现中检查正在调用哪种类型的对象并调用正确的代码?
在 C# 中,这可以通过所谓的显式接口(interface)实现来克服。 Java中有没有等效的方法?
最佳答案
不,没有办法在 Java 的一个类中以两种不同的方式实现相同的方法。
这会导致许多令人困惑的情况,这就是 Java 不允许这样做的原因。
interface ISomething {
void doSomething();
}
interface ISomething2 {
void doSomething();
}
class Impl implements ISomething, ISomething2 {
void doSomething() {} // There can only be one implementation of this method.
}
您可以做的是从两个类中组合一个类,每个类都实现不同的接口(interface)。然后,一个类将具有两个接口(interface)的行为。
class CompositeClass {
ISomething class1;
ISomething2 class2;
void doSomething1(){class1.doSomething();}
void doSomething2(){class2.doSomething();}
}
关于Java - 接口(interface)实现中的方法名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2598009/