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