Standardmethoden in Java aufrufen
Frage:
Ist es möglich, die Standardmethode aufzurufen? Implementierung einer Methode, wenn sie überschrieben wurde oder mit Implementierungen in mehreren Schnittstellen in Konflikt steht? Betrachten Sie den folgenden Code:
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? } }
Antwort:
Die Standardmethode A.foo() kann explizit mit der Syntax A.super.foo() aufgerufen werden . Mit dieser Syntax können Sie auf die ursprüngliche Implementierung der Methode zugreifen, auch wenn diese überschrieben wurde oder aufgrund von Konflikten nicht verfügbar ist.
Beispiel:
Um A aufzurufen. foo() aus der Methode afoo() in Klasse B können Sie den folgenden Code verwenden:
public void afoo() { A.super.foo(); }
Zusätzlich Verwendung:
Die Super-Syntax kann auch verwendet werden, um auf Standardmethoden von anderen Schnittstellen zuzugreifen. Wenn Schnittstelle C beispielsweise auch über eine Standardmethode foo() verfügt, können Sie wie folgt auf beide Implementierungen in Klasse B zugreifen:
public void bah() { A.super.foo(); // Original `foo()` from interface `A` C.super.foo(); // Original `foo()` from interface `C` }
Mithilfe der Super-Syntax können Sie selektiv auswählen, welche Standardimplementierung aufgerufen werden soll oder kombinieren Sie mehrere Implementierungen in Ihren eigenen Methoden.
Das obige ist der detaillierte Inhalt vonWie rufe ich Standardmethoden in Java auf, wenn sie überschrieben werden oder in Konflikt geraten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!