Die Standardmethode der Java8 -Schnittstelle
Was ist die Standardmethode und warum gibt es eine Standardmethode?
Einfach ausgedrückt, die Schnittstelle kann Implementierungsmethoden haben, und es besteht keine Notwendigkeit, die Klasse zu implementieren, um ihre Methoden zu implementieren. Fügen Sie einfach das Standard -Schlüsselwort vor dem Methodennamen hinzu.
Warum brauchen Sie diese Funktion? Zunächst war die vorherige Schnittstelle ein zweischneidiges Schwert. Der Vorteil war, dass es sich eher auf abstrakte als auf eine konkrete Programmierung abzielte. Der Nachteil war, dass es erforderlich war, alle Klassen zu ändern, die die Schnittstelle implementierten, wenn es notwendig war, die Schnittstelle zu ändern. Das aktuelle Sammelframework vor Java 8 enthielt keine Foreach -Methode. Die Lösung, an die man angenommen werden kann, besteht darin, den zugehörigen Schnittstellen im JDK neue Methoden und Implementierungen hinzuzufügen. Für die veröffentlichte Version ist es jedoch unmöglich, der Schnittstelle neue Methoden hinzuzufügen, ohne die vorhandene Implementierung zu beeinflussen. Die Standardmethode wurde also eingeführt. Ihr Ziel ist es, die Schnittstelle nicht mit vorhandenen Implementierungen inkompatibel zu machen.
Wie unten gezeigt,
public interface Animal {Standard void eat () {System.out.println ("Animal Eat Standard -Methode"); }} Eine Schnittstelle wird deklariert und es gibt nur eine Standardmethode im Inneren. Schreiben Sie dann eine bestimmte Klasse, um diese Schnittstelle zu implementieren.
öffentliche Klasse Dog Implements Animal {public void sayhi () {System.out.println ("Hund"); } public static void main (String args []) {Dog Dog = New Dog (); Dog.eat (); }}In einer bestimmten Klasse ist es nicht erforderlich, die Standardmethode zu überschreiben, aber abstrakte Methoden müssen implementiert werden.
Mehrfachvererbung von Standardmethoden
Der unten angegebene Code,
öffentliche Schnittstelle a {void dosomething (); Standard void hello () {System.out.println ("Hallo Welt von der Schnittstelle a"); } Standard void foo () {System.out.println ("foo from interface a"); }} Schnittstelle B erweitert einen {Standard void hello () {System.out.println ("Hallo Welt von Schnittstelle B"); A.super.hello (); this.foo (); A.super.foo (); }} Klasse C implementiert B, a {@Override public void dosomething () {System.out.println ("C -Objekt muss etwas tun"); } public static void main (String args []) {a obj = new c (); obj.hello (); // nennen Sie Bs Methode obj.dosomething (); }}Druckergebnis:
Hallo Welt von der Schnittstelle Bhello World von der Schnittstelle Afoo aus der Schnittstelle Afoo aus der Schnittstelle AC -Objekt muss etwas tun
obj.hello () ruft die Standardmethode in der Schnittstelle B auf. Gleichzeitig ruft die Standardmethode in der Schnittstelle B die Standardmethode in der übergeordneten Schnittstelle auf.
Schauen wir uns ein anderes Beispiel an und denken Sie über die Standardmethode mit demselben Namen in mehrfacher Vererbung nach, wie unten gezeigt.
öffentliche Schnittstelle d {Standard void hello () {System.out.println ("Hallo Welt von D"); }} Schnittstelle e {default void hello () {System.out.println ("Hallo Welt von e"); }} Klasse F implementiert d, e {@Override public void hello () {System.out.println ("Hello World F Class"); D.super.hello (); E.super.hello (); } public static void main (String args []) {f f = new f (); f.hello (); }} Wir müssen die Standardmethode, die die Schnittstelle wie folgt aufrufen soll, formulieren:
D.super.hello (); E.super.hello ();
Ein weiteres Beispiel für die Standardmethode von Java8 :
Java8 hat eine Standardmethode für die Schnittstelle hinzugefügt, was bedeutet, dass die Schnittstelle implementiert werden kann. Diese Implementierungsmethode ist die Standardimplementierung, und Sie können diese Standardmethode auch in der Schnittstellen -Implementierungsklasse neu schreiben.
Das folgende Beispiel:
öffentliche Klasse AppInterFaceFaultMethod {public statische Schnittstelle DefaultMethoddemo {// Definieren Sie die Standardmethode, wobei das Standard -Schlüsselwort der Standardmethode vorangegangen ist, gefolgt von der Methode Deklaration und Methode Body Standard Void Demo (String Input) {System.out.println (Eingabe); } void dosomething (); } public static class Democklasse implementiert defaultMethoddemo {@Override public void dosomething () {System.out.println ("mach etwas"); }} public static class DemoclassOvertedemo implementiert DefaultMethoddemo {// Schreiben Sie die Standardmethode @Override public void Demo (String -Eingabe) {System.out.println ("Demo" + input + "nach Override -Methode"); } @Override public void dosomething () {System.out.println ("mach etwas"); }} public static void main (String [] args) {defaultMethoddemo Demo = new declass (); Demo.demo ("ABC"); DefaultMethoddemo Demooverride = New DemoclassOversHeTemo (); Demooverride.demo ("ABC"); }}Das obige ist eine detaillierte Einführung in die Standardmethode der Java8 -Schnittstelle, und ich hoffe, dass es für das Lernen aller hilfreich sein wird.