Was sind die Unterschiede zwischen den Schnittstellen in Kotlin und Java?
sobes.tech KI
Antwort von AI
Hauptunterschiede:
-
Implementierung von Standardmethoden: In Java 8 und höher können in Schnittstellen Methoden mit Körper implementiert werden (Default-Methoden). In Kotlin haben Schnittstellen standardmäßig Methoden mit Körper. Das Schlüsselwort
defaultist nicht erforderlich. -
Abstrakte und offene Methoden: In Java sind alle Methoden in Schnittstellen implizit abstrakt. Um eine Methode mit Körper zu haben, muss
defaultverwendet werden. In Kotlin sind Methoden mit Körper in Schnittstellen implizitopenund können in implementierenden Klassen überschrieben werden. Methoden ohne Körper sind implizitabstract. -
Zustand (Properties): In Java können Schnittstellen keine Felder enthalten, nur Konstanten (
final static). In Kotlin können Schnittstellen abstrakte Eigenschaften deklarieren, die in Klassen implementiert werden müssen, oder Eigenschaften mit Standard-Gettern/Settern (Backstage-Felder speichern keine Daten). -
Konstruktoren: In Java können Schnittstellen keine Konstruktoren enthalten. In Kotlin können Schnittstellen keine Konstruktoren enthalten.
-
Sichtbarkeitsmodifikatoren: In Java sind Schnittstellenmethoden implizit
public. In Kotlin sind Schnittstellenmethoden implizitpublic open.
| Eigenschaft | Kotlin | Java |
|---|---|---|
| Implementierung von Methoden | Erlaubt (standardmäßig) | Erlaubt (mit default) |
| Abstraktheit der Methoden | Ohne Körper - abstract, mit Körper - open |
Ohne Körper - abstract, mit Körper - default |
| Zustand (Properties) | Erlaubt (abstrakt oder mit Accessoren) | Nicht erlaubt (nur Konstanten) |
| Konstruktoren | Nicht erlaubt | Nicht erlaubt |
| Sichtbarkeitsmodifikator | public open standardmäßig |
public standardmäßig |
Beispiel in Kotlin:
interface MyInterface {
val myProperty: String // Abstrakte Eigenschaft
fun abstractMethod() // Abstrakte Methode
fun defaultMethod() {
// Standard-Implementierung
println("Standard-Implementierung in Kotlin-Interface")
}
}
Beispiel in Java:
interface MyInterfaceJava {
// Keine Properties, nur Konstanten erlaubt
// public static final String MY_CONSTANT = "Wert";
void abstractMethod(); // Abstrakte Methode (implizit öffentlich und abstrakt)
default void defaultMethod() { // Standardmethode
// Standard-Implementierung
System.out.println("Standard-Implementierung in Java-Interface");
}
}