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 ?

Comment pouvez-vous explicitement invoquer l'implémentation d'une méthode par défaut en Java lorsqu'elle est remplacée ?

DDD
DDDoriginal
2024-12-01 09:30:15543parcourir

How Can You Explicitly Invoke a Default Method's Implementation in Java When It's Overridden?

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!

Déclaration:
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