Sobes.tech
Junior

Wie erfolgt die Vererbung in der Kotlin-Sprache?

sobes.tech KI

Antwort von AI

Die Vererbung in Kotlin basiert auf den Schlüsselwörtern open und override. Klassen und Methoden sind standardmäßig final, das heißt, sie können nicht vererbt oder überschrieben werden. Um Vererbung zu erlauben, muss die Klasse oder Methode mit dem Modifikator open gekennzeichnet werden.

Um eine abgeleitete Klasse zu erstellen, verwendet man nach dem Namen der Basisklasse einen Doppelpunkt :, gefolgt vom Namen der Basisklasse mit ihrem Konstruktor.

open class Base(val name: String) {
    open fun greet() {
        println("Hallo, $name")
    }
}

Um eine Methode der Basisklasse in der abgeleiteten Klasse zu überschreiben, verwendet man den Modifikator override.

class Derived(name: String) : Base(name) {
    override fun greet() {
        println("Grüße, $name")
    }
}

Wenn die Basisklasse einen Konstruktor mit Parametern hat, muss die abgeleitete Klasse ihn mit dem Schlüsselwort super aufrufen.

Kotlin unterstützt Mehrfachvererbung von Interfaces, aber nicht von Klassen. Eine Klasse kann nur von einer einzigen Klasse erben.

Eine Klasse kann auch ihre Mitglieder als protected, internal oder private markieren, um deren Sichtbarkeit für abgeleitete Klassen oder innerhalb des Moduls zu beschränken.

Abstrakte Klassen werden mit dem Schlüsselwort abstract deklariert. Sie können sowohl abstrakte (ohne Implementierung) als auch normale Methoden enthalten. Abstrakte Methoden benötigen kein open, da ihre Überschreibung implizit ist. Abstrakte Klassen können nicht direkt instanziiert werden.

abstract class Shape {
    abstract fun draw()
    open fun printInfo() {
        println("Dies ist eine Form.")
    }
}

Auf diese Weise wird die Vererbung in Kotlin explizit durch die Modifikatoren open und override kontrolliert, was die Lesbarkeit verbessert und unerwünschte Vererbungen verhindert.