假設我們有兩個接口...
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