假设我们有两个接口...
public interface StockBroker{
//Give our client some investment strategies.
public String adviseClient(Client c);
}
public interface Doctor{
//Examine our client and give them some medical advice
public String adviseClient(Client c);
}
和实现两个接口的类....
public class JackOfAllTrades implements StockBroker, Doctor{
public String adviseClient(Client c){
}
}
虽然它可能是语法正确使用,以实现这两个接口一种方法,你可能不会得到所需的行为。例如,股票经纪人和医生通常会给予他们的客户极大不同的建议。
有人使用实现接口Doctor
的对象期望adviseClient()
方法提供医疗建议。但是有人使用实现接口StockBroker
的对象期望adviseClient()
方法发布投资策略。
在这种情况下,对象JackOfAllTrades
不知道发布什么类型的建议,因为adviseClient()
方法没有参数,告诉它在调用adviseClient()
时应该实现哪个接口。
这是Java的一个缺点,因为设计接口的人可能无法知道别人会用相同的方法签名来设计一个接口StockBroker
。
对于任何创建接口的人来说,使方法名称足够独特以避免名称冲突的方法很少见。
[Java抽象类实现接口的可能重复,都有相同的方法](http://stackoverflow.com/questions/15202185/java-abstract-class-implements-an-interface-both-have-the -same-method) –
请不要重复关于抽象类和接口,它与两个接口基本相同。 –
可能的重复[在一个类中实现2个接口,方法相同。哪个接口方法被覆盖?](http://stackoverflow.com/questions/2801878/implemeting-2-interfaces-in-a-class-with-same -method-which-interface-method-is-o) – adatapost