如果我有两个接口,两者的目的完全不同,但是使用相同的方法签名,我如何在不强制编写一个为两个接口服务的单个方法并在方法中编写一些复杂逻辑的情况下创建一个类.检查正在进行调用的对象类型并调用正确代码的实现?
在C#中,这被称为显式接口实现所克服. 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.
}
你可以做的是用两个类组成一个类,每个类实现一个不同的接口.然后那个类将具有两个接口的行为.
class CompositeClass {
ISomething class1;
ISomething2 class2;
void doSomething1(){class1.doSomething();}
void doSomething2(){class2.doSomething();}
}