Maison >Java >javaDidacticiel >Comment pouvez-vous explicitement invoquer l'implémentation d'une méthode par défaut en Java lorsqu'elle est remplacée ?
Remplacement des méthodes par défaut en Java
Les méthodes par défaut introduites dans Java 8 offrent une extensibilité aux interfaces sans qu'il soit nécessaire de modifier les implémentations existantes. Cependant, la question se pose de savoir s'il est possible d'invoquer explicitement l'implémentation par défaut lorsqu'elle a été remplacée ou s'il existe des conflits dus à plusieurs implémentations par défaut dans différentes interfaces.
Considérez l'exemple 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? } }
Pour invoquer l'implémentation par défaut de foo dans la classe B, vous pouvez utiliser A.super.foo().
public void afoo() { A.super.foo(); }
Cette syntaxe vous permet pour accéder à l'implémentation par défaut d'origine même lorsque la méthode a été remplacée dans la classe d'implémentation.
Dans les cas où plusieurs interfaces ont des méthodes par défaut avec la même signature, comme les interfaces A et C ayant toutes deux une méthode foo, vous peut sélectionner l'implémentation par défaut spécifique que vous souhaitez appeler :
public class ChildClass implements A, C { @Override public void foo() { A.super.foo(); // Accesses original foo() from A C.super.foo(); // Accesses original foo() from C } }
Cette syntaxe offre une flexibilité dans le choix de l'implémentation par défaut que vous désirez, ou vous pouvez même incorporer les deux implémentations dans votre propre méthode foo personnalisée. La syntaxe d'invocation de méthode est formellement décrite au chapitre 15 de la spécification du langage Java.
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!