Java : résoudre les collisions de noms de méthodes dans l'implémentation d'interface
En Java, l'implémentation de plusieurs interfaces définissant des méthodes avec des signatures identiques peut poser un défi si la classe d'implémentation nécessite des implémentations différentes pour chaque méthode. Contrairement à l'implémentation d'interface explicite de C#, Java n'a pas cette flexibilité.
Raison de la restriction de Java :
Java interdit plusieurs implémentations de la même méthode dans une classe pour éviter toute confusion potentielle et erreurs d'exécution. L'application d'une seule implémentation garantit la clarté et évite toute ambiguïté lors de l'appel de méthodes.
Solution de contournement :
Pour surmonter cette limitation, Java suggère de composer une classe à partir de deux classes distinctes que chacune mettre en œuvre différentes interfaces. Cette classe composite peut alors fournir les fonctionnalités des deux interfaces sans collisions de noms de méthodes.
Par exemple :
interface ISomething { void doSomething(); } interface ISomething2 { void doSomething(); } class Class1 implements ISomething { void doSomething() { ... } } class Class2 implements ISomething2 { void doSomething() { ... } } class CompositeClass { Class1 class1 = new Class1(); Class2 class2 = new Class2(); void doSomething1() { class1.doSomething(); } void doSomething2() { class2.doSomething(); } }
En utilisant cette solution de contournement, une seule classe peut présenter le comportement de plusieurs interfaces, tout en adhérant aux restrictions de Java sur les collisions de noms 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!