logo

Schnittstelle in Java

  1. Schnittstelle
  2. Beispiel einer Schnittstelle
  3. Mehrfachvererbung durch Schnittstelle
  4. Warum Mehrfachvererbung in der Schnittstelle unterstützt wird, während sie im Fall einer Klasse nicht unterstützt wird.
  5. Marker-Schnittstelle
  6. Verschachtelte Schnittstelle

Ein Schnittstelle in Java ist eine Blaupause einer Klasse. Es verfügt über statische Konstanten und abstrakte Methoden.

Die Schnittstelle in Java ist ein Mechanismus zu erreichen Abstraktion . In der Java-Schnittstelle können nur abstrakte Methoden vorhanden sein, kein Methodenkörper. Es wird verwendet, um Abstraktion und Vielfaches zu erreichen Vererbung in Java .

Mit anderen Worten kann man sagen, dass Schnittstellen abstrakte Methoden und Variablen haben können. Es kann keinen Methodenkörper haben.

Java-Schnittstelle auch stellt die IS-A-Beziehung dar .

Sie kann nicht wie die abstrakte Klasse instanziiert werden.

Java string.format

Seit Java 8 können wir haben Standard- und statische Methoden in einer Schnittstelle.

Seit Java 9 können wir haben private Methoden in einer Schnittstelle.

Warum die Java-Schnittstelle verwenden?

Es gibt hauptsächlich drei Gründe, die Schnittstelle zu verwenden. Sie sind unten aufgeführt.

  • Es wird verwendet, um Abstraktion zu erreichen.
  • Durch die Schnittstelle können wir die Funktionalität der Mehrfachvererbung unterstützen.
  • Es kann verwendet werden, um eine lose Kopplung zu erreichen.
Warum Java-Schnittstelle verwenden?

Wie deklariere ich eine Schnittstelle?

Eine Schnittstelle wird mit dem Schlüsselwort interface deklariert. Es bietet völlige Abstraktion; bedeutet, dass alle Methoden in einer Schnittstelle mit dem leeren Textkörper deklariert werden und alle Felder standardmäßig öffentlich, statisch und endgültig sind. Eine Klasse, die eine Schnittstelle implementiert, muss alle in der Schnittstelle deklarierten Methoden implementieren.

Syntax:

 interface { // declare constant fields // declare methods that abstract // by default. } 

Verbesserung der Java 8-Schnittstelle

Seit Java 8 Die Schnittstelle kann über Standardmethoden und statische Methoden verfügen, was später erläutert wird.

Interne Hinzufügung durch den Compiler

Der Java-Compiler fügt vor der Schnittstellenmethode öffentliche und abstrakte Schlüsselwörter hinzu. Darüber hinaus werden vor den Datenelementen öffentliche, statische und endgültige Schlüsselwörter hinzugefügt.

Mit anderen Worten: Schnittstellenfelder sind standardmäßig öffentlich, statisch und endgültig, und die Methoden sind öffentlich und abstrakt.

Schnittstelle in Java

Die Beziehung zwischen Klassen und Schnittstellen

Wie in der Abbildung unten gezeigt, erweitert eine Klasse eine andere Klasse, eine Schnittstelle erweitert eine andere Schnittstelle, aber a Klasse implementiert eine Schnittstelle .

Die Beziehung zwischen Klasse und Schnittstelle

Beispiel für eine Java-Schnittstelle

In diesem Beispiel verfügt die Printable-Schnittstelle nur über eine Methode und ihre Implementierung wird in der A6-Klasse bereitgestellt.

 interface printable{ void print(); } class A6 implements printable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ A6 obj = new A6(); obj.print(); } } 
Testen Sie es jetzt

Ausgabe:

 Hello 

Beispiel für eine Java-Schnittstelle: Drawable

In diesem Beispiel verfügt die Drawable-Schnittstelle nur über eine Methode. Die Implementierung wird durch die Klassen „Rechteck“ und „Kreis“ bereitgestellt. In einem realen Szenario wird eine Schnittstelle von jemand anderem definiert, ihre Implementierung wird jedoch von verschiedenen Implementierungsanbietern bereitgestellt. Darüber hinaus wird es von jemand anderem verwendet. Der Implementierungsteil wird vom Benutzer, der die Schnittstelle verwendet, ausgeblendet.

Datei: TestInterface1.java

 //Interface declaration: by first user interface Drawable{ void draw(); } //Implementation: by second user class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class Circle implements Drawable{ public void draw(){System.out.println('drawing circle');} } //Using interface: by third user class TestInterface1{ public static void main(String args[]){ Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable() d.draw(); }} 
Testen Sie es jetzt

Ausgabe:

 drawing circle 

Beispiel für eine Java-Schnittstelle: Bank

Sehen wir uns ein weiteres Beispiel einer Java-Schnittstelle an, die die Implementierung der Bank-Schnittstelle bereitstellt.

Datei: TestInterface2.java

Java wechseln
 interface Bank{ float rateOfInterest(); } class SBI implements Bank{ public float rateOfInterest(){return 9.15f;} } class PNB implements Bank{ public float rateOfInterest(){return 9.7f;} } class TestInterface2{ public static void main(String[] args){ Bank b=new SBI(); System.out.println('ROI: '+b.rateOfInterest()); }} 
Testen Sie es jetzt

Ausgabe:

 ROI: 9.15 

Mehrfachvererbung in Java nach Schnittstelle

Wenn eine Klasse mehrere Schnittstellen implementiert oder eine Schnittstelle mehrere Schnittstellen erweitert, spricht man von Mehrfachvererbung.

Mehrfachvererbung in Java
 interface Printable{ void print(); } interface Showable{ void show(); } class A7 implements Printable,Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ A7 obj = new A7(); obj.print(); obj.show(); } } 
Testen Sie es jetzt
 Output:Hello Welcome 

F) Mehrfachvererbung wird in Java nicht durch Klassen unterstützt, ist aber durch eine Schnittstelle möglich. Warum?

Wie wir im Kapitel „Vererbung“ erklärt haben, wird die Mehrfachvererbung im Fall von nicht unterstützt Klasse wegen Unklarheit. Im Falle einer Schnittstelle wird es jedoch unterstützt, da keine Mehrdeutigkeit besteht. Dies liegt daran, dass seine Implementierung von der Implementierungsklasse bereitgestellt wird. Zum Beispiel:

 interface Printable{ void print(); } interface Showable{ void print(); } class TestInterface3 implements Printable, Showable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ TestInterface3 obj = new TestInterface3(); obj.print(); } } 
Testen Sie es jetzt

Ausgabe:

 Hello 

Wie Sie im obigen Beispiel sehen können, verfügen die Schnittstellen Printable und Showable über dieselben Methoden, ihre Implementierung wird jedoch von der Klasse TestTnterface1 bereitgestellt, sodass keine Mehrdeutigkeit besteht.


Schnittstellenvererbung

Eine Klasse implementiert eine Schnittstelle, aber eine Schnittstelle erweitert eine andere Schnittstelle.

Unterschied zwischen $ und $$
 interface Printable{ void print(); } interface Showable extends Printable{ void show(); } class TestInterface4 implements Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ TestInterface4 obj = new TestInterface4(); obj.print(); obj.show(); } } 
Testen Sie es jetzt

Ausgabe:

 Hello Welcome 

Java 8-Standardmethode in der Schnittstelle

Seit Java 8 können wir einen Methodenkörper in der Schnittstelle haben. Aber wir müssen es zur Standardmethode machen. Sehen wir uns ein Beispiel an:

Datei: TestInterfaceDefault.java

 interface Drawable{ void draw(); default void msg(){System.out.println('default method');} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceDefault{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); d.msg(); }} 
Testen Sie es jetzt

Ausgabe:

 drawing rectangle default method 

Statische Java 8-Methode in der Schnittstelle

Seit Java 8 können wir eine statische Methode in der Schnittstelle haben. Sehen wir uns ein Beispiel an:

Datei: TestInterfaceStatic.java

 interface Drawable{ void draw(); static int cube(int x){return x*x*x;} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceStatic{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); System.out.println(Drawable.cube(3)); }} 
Testen Sie es jetzt

Ausgabe:

 drawing rectangle 27 

F) Was ist eine Marker- oder Tagged-Schnittstelle?

Eine Schnittstelle, die kein Mitglied hat, wird beispielsweise als Marker- oder getaggte Schnittstelle bezeichnet. Serialisierbar , Klonbar, Remote usw. Sie werden verwendet, um der JVM einige wichtige Informationen bereitzustellen, damit die JVM einige nützliche Vorgänge ausführen kann.

 //How Serializable interface is written? public interface Serializable{ } 

Verschachtelte Schnittstelle in Java

Hinweis: Eine Schnittstelle kann eine andere Schnittstelle haben, die als verschachtelte Schnittstelle bezeichnet wird. Wir werden es im Detail erfahren verschachtelte Klassen Kapitel. Zum Beispiel:

 interface printable{ void print(); interface MessagePrintable{ void msg(); } } 
Mehr über Nested Interface