Maison > Java > javaDidacticiel > le corps du texte

Comment appeler des méthodes par défaut en Java en cas de substitution ou de conflit ?

Patricia Arquette
Libérer: 2024-11-17 18:36:02
original
843 Les gens l'ont consulté

How to Call Default Methods in Java When Overridden or Conflicting?

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

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

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

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!

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