En Java, lorsque plusieurs interfaces définissent des méthodes avec des signatures identiques, leur implémentation dans une classe peut conduire à une ambiguïté. Contrairement à l'implémentation d'interface explicite de C#, Java n'offre pas de solution directe à ce problème.
Pour résoudre ce scénario, Java impose qu'une classe ne puisse fournir qu'une seule implémentation pour une méthode avec une certaine signature. Par conséquent, il n'est pas possible d'implémenter deux interfaces différentes avec des méthodes portant le même nom.
Cependant, il existe des approches alternatives pour gérer cette situation :
Composition :
Au lieu d'implémenter directement les deux interfaces, créez une classe composite qui contient des instances des deux interfaces (par exemple, ISomething et IQuelque chose2). La classe composite peut déléguer les appels à la méthode d'interface appropriée, séparant ainsi efficacement les implémentations.
class CompositeClass { ISomething something1; ISomething2 something2; void doSomething1() { something1.doSomething(); } void doSomething2() { something2.doSomething(); } }
Modèle de conception d'adaptateur :
Utilisez un classe adapter pour adapter la méthode d’une interface à la signature de l’autre. Cela permet une implémentation plus flexible dans laquelle le comportement peut être personnalisé en fonction de l'appelant réel.
class ISomethingAdapter implements ISomething2 { ISomething something; @Override public void doSomething() { // Custom behavior based on the caller something.doSomething(); } }
En utilisant ces approches alternatives, les développeurs Java peuvent résoudre efficacement les collisions de noms de méthodes tout en conservant l'intégrité de leur code et éviter toute ambiguïté dans les implémentations de méthodes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!