如果我有两个接口,它们的用途完全不同,但是具有相同的方法签名,那么我如何使一个类同时实现两个接口,而又不被迫编写一个同时为两个接口服务的方法并在该方法中编写一些复杂的逻辑是否实现检查调用的对象类型并调用适当代码的实现?
在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();} }