假设我们有两个接口...
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
对于创建接口的任何人来说,使方法名称足够独特以致名称冲突很少见可能是一种很好的做法。