Heim >Java >javaLernprogramm >Java-Standardmethode

Java-Standardmethode

PHPz
PHPzOriginal
2024-08-30 16:15:42869Durchsuche

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 funktioniert die Standardmethode in Java?

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.

  • Überschriebene Methoden in der Klasse werden abgeglichen und aufgerufen.
  • Wenn die Methode mit derselben Methode bereitgestellt wird, wird die am besten geeignete ausgewählt. Angenommen, es gibt zwei Schnittstellen, A und B, die für eine bestimmte Klasse vorhanden sind. Wenn A B erweitert, ist A hier am spezifischsten und die Standardmethode wird aus A ausgewählt. Wenn A und b unabhängige Schnittstellen sind, tritt eine schwerwiegende Konfliktsituation auf, und ein Compiler wird eine Beschwerde darüber einreichen nicht in der Lage zu wählen. In dieser Situation muss der Benutzer dem Compiler helfen, indem er zusätzliche Details angibt, aus denen A oder B die Standardmethode ausgewählt werden muss. z.B.
A.super.demo() ;

oder

B.super.demo() ;

Unterschiede zwischen der normalen Methode und der Standardmethode

Lassen Sie uns nun einige der Unterschiede zwischen einer normalen Methode und einer Standardmethode sehen

  • Die Standardmethode geht im Gegensatz zu normalen Methoden mit einem Standardmodifikator einher.
  • Argumente der Schnittstellen haben keinen bestimmten Status für Standardmethoden.
  • Normale Methoden können die Argumente der Methoden und Klassenfelder verwenden und ändern.
  • Neue Funktionalität kann zu den vorhandenen Schnittstellen hinzugefügt werden, anstatt die vorherige Implementierung dieser bestimmten Schnittstellen zu zerstören.

Beim Erweitern einer Schnittstelle, die aus einer Standardmethode besteht, kann Folgendes ausgeführt werden.

  • Die Standardmethode wird nicht überschrieben und vererbt.
  • Standardmethoden werden überschrieben, was den Methoden ähnelt, die in Unterklassen überschrieben werden.
  • Die Standardmethode sollte erneut als abstrakt deklariert werden, was das Überschreiben der Unterklasse erzwingt.

Beispiele zur Implementierung der Java-Standardmethode

Im Folgenden sind die Beispielprogramme aufgeführt:

Beispiel #1

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:

Java-Standardmethode

Erklärung: In diesem Programm haben zwei Schnittstellen, Tiere und Fleischfresser, dieselbe Standardmethode print() und werden mit super aufgerufen.

Beispiel #2

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:

Java-Standardmethode

Erklärung: In diesem Programm ist eine Schnittstelle Sampleinterface vorhanden, die über eine Standardmethode sammethod() verfügt und aufgerufen wird.

Fazit

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!

Stellungnahme:
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
Vorheriger Artikel:Endlich in JavaNächster Artikel:Endlich in Java