假设我们有两个接口......
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 的一个缺点,因为设计Doctor
接口的人可能无法知道其他人会设计StockBroker
具有相同方法签名的接口。
对于任何创建接口的人来说,使方法名称足够独特以使名称冲突很少见可能是一种好习惯。