Implémentation de l'interface Java et collisions de noms de méthodes
Lors de l'implémentation de plusieurs interfaces en Java, il est possible de rencontrer des collisions de noms de méthodes. Cela se produit lorsque des interfaces ayant des objectifs différents définissent des méthodes avec la même signature. Contrairement à C# où l'implémentation d'interface explicite permet plusieurs implémentations de la même méthode, Java ne fournit pas de mécanisme similaire.
Raison de la restriction de Java
Java interdit plusieurs implémentations de la même méthode pour éviter toute ambiguïté et confusion potentielles. Cela garantit qu'un appel de méthode appelle toujours la même implémentation sous-jacente quelle que soit l'interface appelante.
Exemple
Considérez le code suivant :
interface ISomething { void doSomething(); } interface ISomething2 { void doSomething(); } class Impl implements ISomething, ISomething2 { void doSomething() {} // Java only allows one implementation of this method. }
Dans cet exemple, il n'y a aucun moyen de définir deux implémentations distinctes de la méthode doSomething() dans la classe Impl pour chacune.
Solution de contournement
Si vous avez besoin d'un comportement distinct basé sur l'interface appelante, envisagez d'utiliser une approche compositionnelle en créant une classe composite qui délègue à des classes individuelles qui implémentent des interfaces :
class CompositeClass { ISomething class1; ISomething2 class2; void doSomething1(){class1.doSomething();} void doSomething2(){class2.doSomething();} }
Dans cette solution, CompositeClass fournit une façade pour implémenter les deux interfaces tout en déléguant à des classes distinctes pour une méthode spécifique implémentations.
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!