Maison > Java > javaDidacticiel > Comment Java gère-t-il les collisions de noms de méthodes lors de l'implémentation de plusieurs interfaces ?

Comment Java gère-t-il les collisions de noms de méthodes lors de l'implémentation de plusieurs interfaces ?

Mary-Kate Olsen
Libérer: 2024-11-30 19:13:11
original
590 Les gens l'ont consulté

How Does Java Handle Method Name Collisions When Implementing Multiple Interfaces?

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.
}
Copier après la connexion

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();}
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal