Heim >Java >javaLernprogramm >Wie können Sie die Implementierung einer Standardmethode in Java explizit aufrufen, wenn sie überschrieben wird?

Wie können Sie die Implementierung einer Standardmethode in Java explizit aufrufen, wenn sie überschrieben wird?

DDD
DDDOriginal
2024-12-01 09:30:15553Durchsuche

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

Überschreiben von Standardmethoden in Java

Die in Java 8 eingeführten Standardmethoden bieten Erweiterbarkeit für Schnittstellen, ohne dass bestehende Implementierungen geändert werden müssen. Es stellt sich jedoch die Frage, ob es möglich ist, die Standardimplementierung explizit aufzurufen, wenn sie überschrieben wurde oder es aufgrund mehrerer Standardimplementierungen in verschiedenen Schnittstellen zu Konflikten kommt.

Betrachten Sie das folgende Beispiel:

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?
    }
}

Um die Standardimplementierung von foo in Klasse B aufzurufen, können Sie verwenden A.super.foo().

public void afoo() {
    A.super.foo();
}

Mit dieser Syntax können Sie auf die ursprüngliche Standardimplementierung zugreifen, auch wenn die Methode in der implementierenden Klasse überschrieben wurde.

In Fällen, in denen mehrere Schnittstellen vorhanden sind Wenn Sie über Standardmethoden mit derselben Signatur verfügen, z. B. die Schnittstellen A und C, die beide über eine foo-Methode verfügen, können Sie die gewünschte Standardimplementierung auswählen invoke:

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
    }
}

Diese Syntax bietet Flexibilität bei der Auswahl der gewünschten Standardimplementierung, oder Sie können sogar beide Implementierungen in Ihre eigene benutzerdefinierte foo-Methode integrieren. Die Methodenaufrufsyntax wird formal in Kapitel 15 der Java Language Specification beschrieben.

Das obige ist der detaillierte Inhalt vonWie können Sie die Implementierung einer Standardmethode in Java explizit aufrufen, wenn sie überschrieben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn