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
Freigeben: 2024-12-01 09:30:15
Original
547 Leute haben es durchsucht

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?
    }
}
Nach dem Login kopieren

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

public void afoo() {
    A.super.foo();
}
Nach dem Login kopieren

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
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage