Java - 接口(interface)实现中的方法名称冲突

标签 java interface multiple-inheritance composition

如果我有两个接口(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/

相关文章:

java - Android中读取NFC Tag和调用Webservice的方法

java - XSD - 如何从 JAXB 处理中删除一些生成的多余类?

java - Java中的非阻塞连接

c# - 更改实现具有对象类型属性的接口(interface)的类中的属性类型

c# - ObjectQuery 什么时候才是真正的 IOrderedQueryable?

C++,菱形继承(钻石问题),何时/何地需要实现纯虚拟?

java - 为什么 hashcode 设计为返回 int

c# - ProtoInclude 在抽象类中 - dll 不能相互了解

c++ - 如何正确消除继承的 typedef 的歧义?以及如何缓解他们的创作?

java - super 只能高一级吗?