Appel des méthodes par défaut en Java
Question :
Est-il possible d'invoquer la méthode par défaut implémentation d'une méthode lorsqu'elle a été remplacée ou est en conflit avec des implémentations dans plusieurs interfaces ? Considérez le code suivant :
interface A { default void foo() { System.out.println("A.foo"); } } class B implements A { @Override public void foo() { System.out.println("B.foo"); } public void afoo() { // How to invoke A.foo() here? } }
Réponse :
La méthode par défaut A.foo() peut être explicitement invoquée en utilisant la syntaxe A.super.foo() . Cette syntaxe vous permet d'accéder à l'implémentation originale de la méthode même si elle a été remplacée ou n'est pas disponible en raison de conflits.
Exemple :
Pour appeler A. foo() à partir de la méthode afoo() en classe B, vous pouvez utiliser le code suivant :
public void afoo() { A.super.foo(); }
Utilisation supplémentaire :
La super syntaxe peut également être utilisé pour accéder aux méthodes par défaut à partir d’autres interfaces. Par exemple, si l'interface C possède également une méthode par défaut foo(), vous pouvez accéder aux deux implémentations dans la classe B comme suit :
public void bah() { A.super.foo(); // Original `foo()` from interface `A` C.super.foo(); // Original `foo()` from interface `C` }
En utilisant la super syntaxe, vous pouvez choisir de manière sélective quelle implémentation par défaut invoquer ou combinez plusieurs implémentations dans vos propres 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!