Was ist die Schnittstelle in Java und wie wird sie implementiert?



Dieser Artikel hilft Ihnen bei einem umfassenden Ansatz in Bezug auf die Java-Schnittstelle und die verschiedenen Arten von Beispielen in Bezug auf ihre Funktionalität.

' Schnittstelle ist eine fortgeschrittene Stufe zum Erreichen der Abstraktion in der Java-Programmiersprache. Java-Schnittstelle hilft in der Reduzierung der Komplexität im Code und vereinfacht die Lesbarkeit . In diesem Artikel werde ich Ihnen die Java-Schnittstelle anhand des folgenden Dokuments erläutern.

Was ist eine Java-Schnittstelle?

Computerschnittstelle ist als Grenze bekannt, die zwei oder mehr Systeme trennt. Es tauscht Daten zwischen den Komponenten in einem System aus, die Signale, Befehle oder Protokolle senden können.





java-interface

Java Abstraction bietet die Funktionalität einer bestimmten Methode, indem die in die Methode geschriebene Implementierungslogik ausgeblendet wird. In ähnlicher Weise ist Java Interface auch eine abstrakte Klasse, die die Methodendeklaration enthält, jedoch nicht deren Definition. Eine Klasse Geräte eine Schnittstelle zum Erben der abstrakten Methoden. Zusammen mit abstrakten Methoden kann ein Schnittstelle kann auch enthalten Konstanten, statische Methoden, verschachtelte Schnittstellen und Standardmethoden.



Ähnlichkeiten zwischen einer Klasse und einer Schnittstelle.

Eine Schnittstelle ähnelt einer normalen Klasse in Java. Eine Schnittstelle enthält die abstrakten Methoden, und diese Methoden sollen implementiert werden. Dieser Prozess entspricht lediglich der Vererbung, was bei Klassen normal ist. Wir werden mehr über Ähnlichkeiten diskutieren.

  • Wie eine Klasse kann eine Schnittstelle auch so viele Methoden enthalten, wie erforderlich.
  • Ähnlich wie bei Klassen wird auch die Schnittstelle mit a geschrieben .Java Erweiterungsdatei.
  • Überraschenderweise wird der Bytecode für eine Schnittstelle in a angezeigt .Klasse Datei.
  • Eine Schnittstelle wird in Form eines Pakets angezeigt und ihr jeweiliger Bytecode befindet sich in einem Verzeichnis, das mit dem Paketnamen übereinstimmt.

Warum brauchen wir eine Schnittstelle?

Java wird nicht unterstützt Mehrfachvererbungen, Aus diesem Grund können Klassen nicht mehr als eine Klasse in einer Instanz erweitern. Kinderklassen konnte die Eigenschaften von nicht erben mehrere übergeordnete Klassen in einer einzigen Instanz, wie es führt Diamantproblem. Um dieses Problem zu lösen, Schnittstelle ist vorgestellt. Lassen Sie uns dieses Problem anhand eines Beispiels verstehen.



Nehmen wir an, wir haben zwei Flugzeuge, eines kann nur eines tragen Passagiere, nur der andere Position. Jetzt müssen wir erben die Eigenschaften sowohl des Frachtflugzeugs als auch des Passagierflugzeugs. Java würde diese Lösung nicht unterstützen, da sie in endet Mehrdeutigkeit zwischen den beiden Ebenen.

Aber wenn Sie es möglich machen können, indem Sie Java das Gefühl geben, dass es eine Ebene erbt und Umsetzung die in der anderen Ebene vorhandenen Methoden. Es ist wie ein Verkehrsflugzeug, das sowohl Passagiere als auch Frachtgepäck mitnimmt. Das Interface ist wie das Erstellen einer größeren Ebene, die beide Aufgaben ausführen kann, ohne die Komponenten voneinander zu stören, anstatt nur die Methoden aus dem zu übernehmen Schnittstellenklasse.

// Klasse A Code

Paket mehrere Klasse A {void msg () {System.out.println ('Hallo')}}

// Klasse B Code

Paket mehrere Klasse B {void msg () {System.out.println ('Willkommen')}}

Klasse C Code

Paket mehrere Klasse C erweitert A, B {// Dies wird von Java nicht akzeptiert. Es wird ein Fehler ausgegeben und Code wird nicht ausgeführt. public static void main (String args []) {C obj = new C () obj.msg ()}}

Ausgabe:

Error. Dieser spezielle Ansatz löst eine Ausnahme aus. Java unterstützt keine Mehrfachvererbungen. Dieser Fehler ist bekannt als Diamantproblem 

Lassen Sie uns eine Lösung versuchen, indem wir eine Schnittstelle verwenden. Kinderklassen kann von auf die Methoden zugreifen Mehrere Eltern Klassen in einer einzelnen Instanz.

Wie installiere ich PHP?

// Schnittstellencode

Paket MIS Public Interface-Lösung {public void Hello () public void Welcome ()}

//Klassencode

Paket MIS public class classA implementiert die Lösung {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('Willkommen bei Edureka ')} public static void main (String [] args) {classA Edureka = neue classA () Edureka.Hello () Edureka.Welcome ()}}

Ausgabe:

Hallo Welt
Willkommen bei Edureka

Deklarieren einer Java-Schnittstelle: Syntax

Schnittstelle Schnittstellenname {// Konstante Felder deklarieren // Methoden deklarieren () // Standardmethoden}

Lassen Sie uns ein Beispiel für die Java-Schnittstelle durchgehen

Beispiel für eine Java-Schnittstelle

Lassen Sie uns einen einfachen Rechner erstellen, der auf der Java-Schnittstelle basiert.

// Schnittstellencode

Paket grundlegende Operationen öffentliche Schnittstelle Mathematik {public void add () public void sub () public void mul () public void div ()}

//Klassencode

Paket grundlegende Operationen importieren java.util.Scanner öffentliche Klasse student1 implementiert Mathematik {@Override public void add () {Scanner kb = neuer Scanner (System.in) System.out.println ('Geben Sie zwei beliebige Ganzzahlwerte ein, um die Addition durchzuführen') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Summe von' + a + 'und' + b + 'ist' + s)} @Override public void sub () {Scanner kb = neuer Scanner (System.in) System.out.println ('Geben Sie zwei beliebige Ganzzahlwerte ein, um die Subtraktion durchzuführen') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('Unterschied von' + a + 'und' + b + 'ist' + s)} @Override public void mul () {Scanner kb = neuer Scanner (System.in) System.out.println ('Enter Beliebige Multiplikation mit zwei ganzzahligen Werten ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' Produkt von '+ a +' und '+ b +' ist '+ s)} @Override public void div () {Scanner kb = neuer Scanner (System.in) System.out.println ('Division von zwei ganzzahligen Werten eingeben') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('Quotient von' + a + 'und' + b + 'ist' + s)} public static void main (String [] args) {student1 Edureka1 = new student1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Ausgabe:

Wenn wir weiter vorankommen, werden wir lernen, eine Java-Schnittstelle zu verschachteln.

Verschachteln der Java-Schnittstelle

Verschachtelung der Schnittstelle ist ein Prozess zum Deklarieren einer Schnittstelle innerhalb einer anderen Vorhandene Schnittstelle oder Deklarieren einer Schnittstelle innerhalb von a Klasse. Die verschachtelte Schnittstelle wird auch als bezeichnet Innere Schnittstelle.

Auf die verschachtelte Schnittstelle kann nicht zugegriffen werden direkt . Daher wird Nesting implementiert, um die Namespaces aufzulösen, indem sie mit ihren verwandten gruppiert werden Schnittstellen und Klassen. Durch dieses Verfahren wirdwir können das anrufen Verschachtelte Schnittstelle durch die Äußere Klasse oder Äußere Schnittstelle Name gefolgt von a Punkt (.) , und Name der Schnittstelle.

Lassen Sie uns einige Beispiele ausprobieren, die auf basieren Verschachtelung der Schnittstelle. Versuchen wir zunächst, a zu nisten Java-Schnittstelle in einem anderen Java-Schnittstelle Wie nachfolgend dargestellt:

// Schnittstellencode

Paket Nest öffentliche Schnittstelle OuterInterface {void display () Schnittstelle InnerInterface {void InnerMethod ()}}

//Klassencode

Paket Nest-Klasse NestedInterfaceDemo implementiert OuterInterface.InnerInterface {public void InnerMethod () {int n = 10, t1 = 0, t2 = 1 System.out.print ('Erste' + n + 'Begriffe:') für (int i = 1) i & lt = n ++ i) {System.out.print (t1 + '+') int sum = t1 + t2 t1 = t2 t2 = sum} System.out.println ('nPrinting from Nested InnerInterface method ...! n ')} public static void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Ausgabe:

Erste 10 Begriffe: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Drucken nach der Methode der verschachtelten inneren Schnittstelle ...!

Versuchen wir nun, a zu nisten Java-Schnittstelle in einem Java-Klasse.

// Schnittstellencode

Paket Nest2 öffentliche Klasse EdurekaClass {Schnittstelle EdurekaInterface {void NestedMethod ()}}

//Klassencode

Die Nest2-Klasse NestedInterfaceDemo2 implementiert EdurekaClass.EdurekaInterface {public void NestedMethod () .length i ++) result [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (neuer String (Ergebnis))} public static void main (String args []) {EdurekaClass.EdurekaInterface obj = new NestedInterfaceDemo2 () obj.NestedMethod ()}}

Ausgabe:

akerudE

Obwohl eine Schnittstelle einer Klasse fast ähnlich sieht, gibt es einige Unterschiede zwischen ihnen. Lassen Sie uns ihre Unterschiede diskutieren.

Speicherklasse c ++

Unterschied zwischen Java-Klasse und Java-Schnittstelle

SCHNITTSTELLE KLASSE
Unterstützt Mehrfachvererbung Unterstützt keine Mehrfachvererbung
Hat keine Datenmitglieder Beinhaltet Datenmitglieder
Hat keine Konstruktoren Beinhaltet Konstruktoren
Beinhaltet unvollständige Mitglieder (Unterschriftenmitglied) Beinhaltet sowohl vollständige (Zusammenfassung) als auch unvollständige Mitglieder
Hat keine Zugriffsmodifikatoren Enthält Zugriffsmodifikatoren
Die Schnittstelle hat keine statischen Mitglieder Die Klasse hat alle ihre Mitglieder als statisch

Vor- und Nachteile der Java-Schnittstelle

Vorteile:

  • Java Interface unterstützt Mehrfachvererbung.
  • Mit Java Interface können Programmierer die komplexen Programmieransätze auflösen und vereinfachen Abhängigkeiten zwischen den Objekten.
  • Java-Schnittstelle macht die Datenmitglieder und Methoden in einer Anwendung, die lose gekoppelt werden soll.

Nachteile:

  • Die Verwendung der Java-Schnittstelle bringt die Ausführungsgeschwindigkeit der Anwendung.
  • Java-Schnittstellen in der Anwendung werden entweder wiederholt in großem Umfang oder kaum verwendet.

Wichtige Punkte auf der Java-Schnittstelle

  • Keine der in der Schnittstelle deklarierten Methoden verfügt über einen Body, der eine vollständige Abstraktion ermöglicht.
  • Es ist nicht möglich, ein Objekt einer Schnittstelle zu erstellen. Daher ist die Instanziierung einer Schnittstelle nicht möglich.
  • Eine Klasse kann eine Schnittstelle mithilfe der Schlüsselwortimplementierungen implementieren. Lassen Sie uns dies anhand eines Beispiels sehen.

// Schnittstellencode

Paket extInterface öffentliche Schnittstelle extInterface {public void method1 () public void method2 ()}

//Klassencode

Paket extInterface import java.util.Scanner Klasse Edureka implementiert extInterface {public void method1 () {System.out.println ('Implementierung von Methode1') Scanner scanner = neuer Scanner (System.in) System.out.println ('Nummer eingeben So finden Sie die Quadratwurzel in Java: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (square) System.out.printf (' Quadratwurzel der Zahl:% f ist:% f% n ', Quadrat, squareRoot)} public void method2 () {System.out.println ('Implementierung von method2')} public static void main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

Ausgabe:

Implementierung von Methode1 Geben Sie die Zahl ein, um die Quadratwurzel in Java zu finden: 16 Die Quadratwurzel der Zahl: 16.0 ist: 4.0
  • Eine Klasse kann mehrere Vererbungen in einer einzelnen Instanz implementieren. Lassen Sie es uns durch den folgenden Code verstehen.

// Schnittstelle 1 Code

Paket ExtendInt öffentliche Schnittstelle Interface1 {public void armstrong ()}

// Schnittstelle 2 Code

Paket ExtendInt öffentliche Schnittstelle Interface2 {public void prime ()} // Klassencode-Paket ExtendInt öffentliche Klasse Edureka2 implementiert Interface1, Interface2 {public void armstrong () {int c = 0, a, temp int n = 153 // Eingabetemp = n während (n & gt0) {a = n% 10 n = n / 10 c = c + (a * a * a)} wenn (temp == c) System.out.println ('Armstrong Nummer') sonst System.out.println ('Not Armstrong Number') System.out.println ('Erweiterung auf Schnittstelle 1')} public void prime () {int i, m = 0, flag = 0 int n = 3 // Eingabe m = n / 2 if (n == 0 || n == 1) {System.out.println (n + 'ist keine Primzahl')} else {for (i = 2i & lt = mi ++) {if (n% i == 0) {System .out.println (n + 'ist keine Primzahl') flag = 1 break}} if (flag == 0) {System.out.println (n + 'ist Primzahl')}} System.out.println ('Erweitern zu Schnittstelle 2 ')} public static void main (String args []) {Schnittstelle2 obj = neue Edureka2 () obj.prime () Schnittstelle1 obj1 = neue Edureka2 () obj1.armstrong ()}}

Ausgabe:

3 ist die Primzahl Erweiterung auf Schnittstelle 2 Armstrong-Nummer Erweiterung auf Schnittstelle 1
  • Für die Java-Schnittstelle müssen die deklarierten Variablen zum Zeitpunkt der Deklaration initialisiert werden.
  • Zugriffsmodifikatoren für eine Schnittstelle sind standardmäßig auf public static und final festgelegt. Lassen Sie uns dies anhand eines Beispiels verstehen

// Schnittstellencode

Pakettest öffentliche Schnittstelle Versuchen Sie {// public int a = 10 // public static final int a = 10 // static int a = 0 // final int a = 10 // int a = 10}
  • Alle oben genannten Erklärungen sind innerhalb einer Schnittstelle wahr und gültig.
  • Java Interface kann eine beliebige Anzahl von Schnittstellen erweitern, jedoch niemals eine implementieren.
  • Eine Java-Klasse kann beliebig viele Schnittstellen implementieren.
  • Java Class kann keine Schnittstellen mit demselben Methodennamen und unterschiedlichem Rückgabetyp implementieren.
  • Wenn zwei oder mehr Methoden mit demselben Methodennamen in mehreren Schnittstellen vorhanden sind, reicht es aus, die Methode einmal zu implementieren. Lassen Sie uns dies anhand eines praktischen Beispiels verstehen.

// Schnittstellencode

Paket gleiche öffentliche Schnittstelle A {public void display ()} // Schnittstellencode Paket gleiche öffentliche Schnittstelle B {public void display ()} // Klassencode Paket gleiche Klasse gleiche implementiert A, B {public void display () {System.out .println ('Daten anzeigen')} public static void main (String [] args) {same print = new same () print.display ()}}

Ausgabe:

Willkommen bei Edureka E-Learning

Damit sind wir am Ende dieses Artikels angelangt. Ich hoffe, Sie haben die Bedeutung von Schnittstelle, Syntax, Funktionalität, Schnittstellenverschachtelung, Schlüsselpunkten der Java-Schnittstelle und mit ihnen ausgeführten Operationen verstanden.

Nachdem Sie die Grundlagen von Java verstanden haben, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka richtet sich an Studenten und Fachleute, die Java-Entwickler werden möchten. Der Kurs soll Ihnen einen Vorsprung in die Java-Programmierung verschaffen und Sie sowohl für Kern- als auch für fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & schulen Frühling .

Hast du eine Frage an uns? Erwähnen Sie es im Kommentarbereich dieses 'Java Interface' -Blogs und wir werden uns so schnell wie möglich bei Ihnen melden.