Heim > Java > javaLernprogramm > Wie kann ich die Standardmethode einer Java-Schnittstelle nach dem Überschreiben explizit aufrufen?

Wie kann ich die Standardmethode einer Java-Schnittstelle nach dem Überschreiben explizit aufrufen?

Barbara Streisand
Freigeben: 2024-12-11 18:33:10
Original
757 Leute haben es durchsucht

How Can I Explicitly Call a Java Interface's Default Method After Overriding?

Explizites Aufrufen von Standardmethoden in Java

Java 8 führte Standardmethoden in Schnittstellen ein und ermöglichte so eine Schnittstellenerweiterung, ohne bestehende Implementierungen zu ändern. Es stellt sich jedoch die Frage: Können wir die Standardimplementierung einer Methode explizit aufrufen, wenn sie überschrieben wurde oder Konflikte aufgrund mehrerer Standardimplementierungen in verschiedenen Schnittstellen bestehen?

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 A.foo() explizit von afoo() in Klasse B aufzurufen, können wir die verwenden Syntax:

A.super.foo();
Nach dem Login kopieren

Dieser Ansatz ermöglicht es uns, auf die ursprüngliche Standardimplementierung der Methode zuzugreifen, selbst wenn diese überschrieben wurde oder Konflikte mit anderen Standardimplementierungen vorliegen.

In einem komplexeren Szenario Wenn mehrere Schnittstellen Standardmethoden mit demselben Namen enthalten, können wir dieselbe Syntax verwenden, um die spezifische Standardimplementierung auszuwählen, die wir verwenden möchten:

public class ChildClass implements A, C {
    @Override
    public void foo() {
       // Override and do something else

       // Or manage conflicts
       A.super.foo();
       C.super.foo(); // Default implementation from C
    }

    public void bah() {
       A.super.foo(); // Default implementation from A
       C.super.foo(); // Default implementation from C
    }
}
Nach dem Login kopieren

By explizit Durch den Aufruf von Standardmethoden können wir steuern, wie Schnittstellen erweitert werden, Konflikte lösen und nach Bedarf auf Originalimplementierungen zugreifen, ohne den Überschreibungsvertrag zu brechen. Dies bietet Flexibilität und Anpassung bei schnittstellenbasierten Designs.

Das obige ist der detaillierte Inhalt vonWie kann ich die Standardmethode einer Java-Schnittstelle nach dem Überschreiben explizit aufrufen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage