In Java 8 wird ein neues Konzept namens Standardmethode eingeführt, um eine Abwärtskompatibilität zu gewährleisten, die Lambda-Ausdrücke durch alte Schnittstellen steuert. Darüber hinaus dürfen Schnittstellen Funktionen mit Implementierung haben, ohne dass es zu Problemen bei den Klassen kommt, in denen die Schnittstelle implementiert wird. Vor der Einführung von Java 8 waren von Schnittstellen nur abstrakte Methoden erlaubt. Darüber hinaus mussten Funktionen in verschiedenen Klassen angeboten werden. In den folgenden Abschnitten werden Syntax, Funktionsweise und Beispiele der Standardmethode erläutert.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Syntax
Unten finden Sie die Syntax einer Standardmethode.
public interface animal { default void sound() { System.out.println("This is a sample default method. . .!"); }}
Wie wir wissen, verfügen Schnittstellen wie List und Collections nicht über die Methode forEach. Wenn es hinzugefügt wird, wird die Framework-Implementierung von Sammlungen unterbrochen. Da die Standardmethode in Java 8 eingeführt wurde, kann eine Standardimplementierung für die Methode forEach erfolgen. Darüber hinaus kann eine Klasse erstellt werden, die zwei Schnittstellen mit denselben Standardfunktionen implementiert. Lassen Sie uns sehen, wie die Mehrdeutigkeit des Codes behoben wird.
public interface livingthings { default void sound() { . . . System.out.println("Living things too make noise . . .") ; } } public interface animals { default void sound() { . . . System.out.println("animals too make noise . . .") ; } }
Es gibt zwei Lösungen für diese Mehrdeutigkeit.
1.Um die Standardmethodenimplementierung zu überschreiben, erstellen Sie Ihre eigene Methode.
public class dogs implements livingthings,animals { default void sound() { . . . System.out.println("dogs bark . . .") ;} }
2. Rufen Sie mit super die Standardmethode auf
public class dogs implements livingthings,animals { default void sound() { . . . livingthings.super.print("dogs bark . . .") ; } }
In Java können normalerweise n Schnittstellen durch eine Klasse implementiert werden. Darüber hinaus kann eine Schnittstelle um eine weitere Schnittstelle erweitert werden. Angenommen, es gibt zwei Schnittstellen für eine Klasse und es ist eine Standardmethode implementiert. Die jeweilige Klasse kann bei der Auswahl der für den Aufruf in Frage kommenden Methode verwirrt sein. Um diese Konflikte zu lösen, können die folgenden Punkte getan werden.
A.super.demo() ;
oder
B.super.demo() ;
Lassen Sie uns nun einige der Unterschiede zwischen einer normalen Methode und einer Standardmethode sehen
Beim Erweitern einer Schnittstelle, die aus einer Standardmethode besteht, kann Folgendes ausgeführt werden.
Im Folgenden sind die Beispielprogramme aufgeführt:
Java-Programm zur Implementierung der Standardmethode
Code:
//Java program to implement default method public class DefExample { //main method public static void main(String args[]) { //create an object for the interface animal Animals obj = new Dog(); //call the print method obj.print( ); } } //create an interface animal interface Animals { //default method default void print( ) { System.out.println("I have four legs. . . ! !"); } static void sound() { System.out.println("I used to bark alot!!!") ; } } //create an interface <u>carnivores</u> interface Carnivores { //default method default void print( ) { System.out.println("I eat non veg. . .! !") ; } } //class that implements the other two interfaces class Dog implements Animals, Carnivores { public void print( ) { //call the print method of Animals using super Animals.super.print( ) ; //call the print method of Carnivores using super Carnivores.super.print( ); //call the sound method of Animals Animals.sound(); System.out.println("I am a Dog . . .!"); } }
Ausgabe:
Erklärung: In diesem Programm haben zwei Schnittstellen, Tiere und Fleischfresser, dieselbe Standardmethode print() und werden mit super aufgerufen.
Java-Programm zur Implementierung der Standardmethode
Code:
//Java program to implement default method interface Sampleinterface{ // Since this is declared as a default method, this has to be implemented in the implementation classes default void sammethod(){ System.out.println("a default method which is newly added to the program"); } // existing public as well as abstract methods has to be implemented in the implementation classes void oldmethod(String s); } public class DefExample implements Sampleinterface{ // abstract method implementation public void oldmethod(String s){ System.out.println("The string given is: "+ s); } public static void main(String[] args) { DefExample obj = new DefExample(); //call the default method obj.sammethod(); //call the abstract method obj.oldmethod("I am the old method in the program"); } }
Ausgabe:
Erklärung: In diesem Programm ist eine Schnittstelle Sampleinterface vorhanden, die über eine Standardmethode sammethod() verfügt und aufgerufen wird.
In Java 8 wird ein neues Konzept namens Standardmethode zur Durchführung der Abwärtskompatibilität angeboten, bei dem alte Schnittstellen Lambda-Ausdrücke steuern. Darüber hinaus haben Schnittstellenargumente keinen spezifischen Status für Standardmethoden. In diesem Artikel werden Syntax, Funktionsweise und Beispiele der Standardmethode ausführlich erläutert.
Das obige ist der detaillierte Inhalt vonJava-Standardmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!