Supponiamo di avere due interfacce ...
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);
}
E una classe che implementa entrambe le interfacce ....
public class JackOfAllTrades implements StockBroker, Doctor{
public String adviseClient(Client c){
}
}
Mentre può essere sintatticamente corretto per implementare entrambe le interfacce con un metodo, potresti non ottenere il comportamento desiderato. Ad esempio, un agente di borsa e un medico di solito danno ai loro clienti consigli molto diversi.
Qualcuno che utilizza un oggetto che implementa l'interfaccia Doctor
si aspetta che il metodo adviseClient()
dia un parere medico. Ma qualcuno che utilizza un oggetto che implementa l'interfaccia StockBroker
si aspetta che il metodo adviseClient()
distribuisca strategie di investimento.
In questo caso, l'oggetto JackOfAllTrades
non sa che tipo di consiglio da dare fuori perché il metodo non ha parametri adviseClient()
dicono che quale interfaccia si suppone essere di esecuzione quando adviseClient()
si chiama.
Questa è una limitazione in Java perché la persona che progetta l'interfaccia Doctor
potrebbe non avere modo di sapere che qualcun altro avrebbe progettato un'interfaccia StockBroker
con la stessa firma del metodo.
Per chiunque crei interfacce, è probabilmente buona norma rendere i nomi dei metodi univoci abbastanza che le collisioni di nomi sono rare.
possibile duplicato di [classe astratta Java implementa un'interfaccia, entrambi hanno lo stesso metodo] (http://stackoverflow.com/questions/15202185/java-abstract-class-implements-an-interface-both-have-the -same-method) –
Per favore, anche se il duplicato riguarda le classi e le interfacce astratte, è fondamentalmente lo stesso con due interfacce. –
possibile duplicato di [Implemeting 2 interfacce in una classe con lo stesso metodo. Quale metodo di interfaccia è sovrascritto?] (Http://stackoverflow.com/questions/2801878/implemeting-2-interfaces-in-a-class-with-same -method-which-interface-method-is-o) – adatapost