Was ist eine Schnittstelle in Java? Anfängerleitfaden für die Java-Schnittstelle. Wie benutzt man es? Beispiel anbei.
Veröffentlicht: 2020-10-31
Warum und wann sollte man ein Interface verwenden?
- Eine Schnittstelle ist ein Referenztyp in Java.
- Es ist ähnlich wie im Unterricht.
- Es ist eine Sammlung abstrakter Methoden.
- Es wird verwendet, um eine vollständige Abstraktion zu erreichen.
Ich glaube, das ist die erste Frage, die Sie im Java-Interview erwarten könnten. Sehr einfache Fragen, die jedoch häufig in Interviews verwendet werden
Darauf gibt es keine perfekte Antwort und es gibt mehrere Möglichkeiten, diese Frage zu beantworten. Könnte Ihr Gesprächspartner auf der Suche nach einem praktischen Ansatz für diese Fragen sein? Möglich.
Beginnen wir dann mit der grundlegenden Definition einer Java-Schnittstelle
Wir werden dasselbe mit mehreren Beispielen durchgehen.
- Was ist eine Schnittstelle in Java?
- Was ist eine Schnittstelle in Java mit Echtzeitbeispiel?
- Warum eine Schnittstelle in Java verwenden?
- Schnittstellendesign Java
- Die häufigsten Interviewfragen zu Interface
Schnittstellengrundlagen:

- Eine
interface
ist nur ein Vertrag, eine Beschreibung des Verhaltens einer implementierenden Klasse. Die implementierende Klasse stellt sicher, dass sie diese Methoden hat, die auf ihr verwendet werden können. Es ist im Grunde ein Vertrag oder ein Versprechen, das die Klasse abgeben muss. - Was ist, wenn in Ihren Projekten alle verschiedenen Implementierungen dieselben Methodensignaturen verwenden? In diesem Fall funktioniert die Schnittstelle am besten.
- Lassen Sie uns in der späteren Phase nach der Implementierung eines großen Projekts sehen, ob Sie Schnittstellendefinitionen an ungefähr 50 Stellen implementiert haben. Was ist, wenn Sie die Schnittstelle ändern? Sie müssen an allen 50 Stellen in Ihren Projekten Änderungen vornehmen.
- Es ist ratsam, während der Designphase etwas mehr Zeit damit zu verbringen, Interface zu definieren, anstatt es zu einem späteren Zeitpunkt zu ändern
- Eine Schnittstelle besteht aus
singleton
-Variablen (public static final
) undpublic abstract
Methoden. Normalerweise bevorzugen wir eine Schnittstelle in Echtzeit, wenn wir wissen, was wir tun sollen, aber nicht wissen, wie wir es tun sollen. Eine Schnittstelle kann keine Instanzfelder enthalten. - Die Klassen, die das Interface implementieren, müssen die Methodendefinition für alle vorhandenen Methoden bereitstellen.
- Eine Klasse kann mehrere Schnittstellen implementieren.
- Eine Schnittstellenimplementierung kann zu jeder bestehenden Klasse von Drittanbietern hinzugefügt werden.
- Eine Schnittstelle kann beliebig viele Methoden enthalten.
- In Java können Sie keine Schnittstelle instanziieren.
- Ein Interface enthält keine Konstruktoren.
- Eine Schnittstelle wird nicht durch eine Klasse erweitert; es wird von einer Klasse implementiert.
- Eine Schnittstelle kann mehrere Schnittstellen erweitern.
Schnittstellenbeispiele:
Tipp 1.
Erstellen Sie die Schnittstelle CrunchifyDatabaseInterface.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package crunchify . com . java . tutorials ; import java . util . Map ; import java . util . UUID ; /** * @author Crunchify.com * What Is an Interface in Java? Beginners Guide to Java Interface. */ public interface CrunchifyDatabaseInterface { // Basic Database CRUD Operations // Insert boolean insertCrunchifyRecord ( UUID id , String name , String address , String phone , String zip , String comments ) ; // Delete public boolean deleteCrunchifyRecord ( UUID id ) ; // Get public Map < String , String > getListOfAllCrunchifyRecords ( ) ; // Update boolean updateCrunchifyRecord ( UUID id , Map < String , String > records ) ; } |
Tipp 2.
Implementieren Sie die Schnittstelle CrunchifyDatabaseOracleImpl.java
Wenn Sie zum ersten Mal eine Schnittstelle implementieren, zeigt Ihnen Eclipse, dass Sie nicht implementierte Methoden hinzufügen.

Klicken Sie einfach auf „ Add unimplemented methods
“ und Ihre IMPL-Klasse sollte mit dem Auto-generated method stub
fertig sein.
Tipp 3. Tatsächliche Impl-Methode.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
package crunchify . com . java . tutorials ; import java . util . Map ; import java . util . UUID ; /** * @author Crunchify.com * What Is an Interface in Java? Beginners Guide to Java Interface. */ public class CrunchifyDatabaseOracleImpl implements CrunchifyDatabaseInterface { // Override: Indicates that a method declaration is intended to override a method declaration in a supertype. // If a method is annotated with this annotation type compilers are required to generate an error message unless at least one of the following conditions hold: // The method does override or implement a method declared in a supertype. // The method has a signature that is override-equivalent to that of any public method declared in Object. @Override public boolean insertCrunchifyRecord ( UUID id , String name , String address , String phone , String zip , String comments ) { // TODO Provide your actual implementation here based on your need specific to Oracle return false ; } // UUID(): A class that represents an immutable universally unique identifier (UUID). // A UUID represents a 128-bit value. // There exist different variants of these global identifiers. // The methods of this class are for manipulating the Leach-Salz variant, although the constructors allow the creation of any variant of UUID @Override public boolean deleteCrunchifyRecord ( UUID id ) { // TODO Provide your actual implementation here based on your need specific to Oracle return false ; } // Map(): An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value. // This interface takes the place of the Dictionary class, which was a totally abstract class rather than an interface. @Override public Map < String , String > getListOfAllCrunchifyRecords ( ) { // TODO Provide your actual implementation here based on your need specific to Oracle return null ; } @Override public boolean updateCrunchifyRecord ( UUID id , Map < String , String > records ) { // TODO Provide your actual implementation here based on your need specific to Oracle return false ; } } |
Tipp 4.
Auf ähnliche Weise könnten Sie dieselbe Schnittstelle verwenden, um verschiedene datenbankspezifische Operationen zu implementieren. Wie für DB2, MySQL, MongoDB, Cassandra DB usw.

Was kommt als nächstes?
Ich schreibe gerade ein Tutorial zur abstrakten Klasse und dann ein weiteres Tutorial, das den Unterschied zwischen abstrakter Klasse und Schnittstelle deutlich zeigt.