Junior
Was sind die Hauptunterschiede zwischen einer Klasse und einer Schnittstelle in Kotlin?
sobes.tech KI
Antwort von AI
- Klasse: kann Eigenschaften (Zustände) und Funktionen (Verhalten) enthalten. Kann abstrakt, offen (für Vererbung) oder final sein. Konstruktoren legen fest, wie Objekte erstellt werden. Unterstützt Vererbung von einer Klasse und Mehrfachimplementierung von Schnittstellen.
- Schnittstelle: definiert einen Verhaltensvertrag, den Klassen implementieren müssen. Kann abstrakte Deklarationen von Funktionen und Eigenschaften enthalten sowie Funktionen mit Implementierung (Java 8+). Kann keine Zustände (Eigenschaften mit Backing-Feldern) enthalten. Eine Klasse kann mehrere Schnittstellen implementieren. Hat keine Konstruktoren.
Vergleichstabelle:
| Aspekt | Klasse | Schnittstelle |
|---|---|---|
| Zustand | Kann Eigenschaften mit Wert haben. | Kann keine Eigenschaften mit Wert haben (nur abstrakte). |
| Konstruktoren | Können vorhanden sein. | Haben keine. |
| Implementierung | Kann vollständige Implementierung bereitstellen. | Bietet teilweise oder vollständige Implementierung (mit Default-Methoden). |
| Vererbung | Erbt von einer Klasse. | Implementiert mehrere Schnittstellen. |
| Initialisierung | Kann instanziiert werden. | Kann nicht direkt instanziiert werden. |
| Typ | Konkrete oder abstrakte Klasse. | Nur Verhaltensvertrag. |
Beispiel Klasse:
class Person(val name: String) { // Klasse mit Konstruktor und Eigenschaft
fun greet() {
println("Hello, my name is $name")
}
}
Beispiel Schnittstelle:
interface Greeter { // Schnittstelle mit Methode
fun greet()
}
class EnglishGreeter : Greeter { // Klasse, die die Schnittstelle implementiert
override fun greet() {
println("Hello!")
}
}