Sobes.tech
Junior

Hoe wordt er geërfd in de Kotlin-taal?

sobes.tech AI

Antwoord van AI

Overerving in Kotlin is gebaseerd op de sleutelwoorden open en override. Klassen en methoden zijn standaard final, wat betekent dat ze niet kunnen worden overgeërfd of overschreven. Om overerving toe te staan, moet de klasse of methode worden gemarkeerd met de modifier open.

Om een afgeleide klasse te maken, gebruik je een dubbele punt : na de naam van de basisklasse, gevolgd door de naam van de basisklasse met zijn constructor.

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

Om een methode van de basisklasse te overschrijven in de afgeleide klasse, gebruik je de modifier override.

class Derived(name: String) : Base(name) {
    override fun greet() {
        println("Groeten, $name")
    }
}

Als de basisklasse een constructor met parameters heeft, moet de afgeleide klasse deze aanroepen met het sleutelwoord super.

Kotlin ondersteunt meervoudige overerving van interfaces, maar niet van klassen. Een klasse kan slechts van één andere klasse erven.

Een klasse kan ook haar leden markeren als protected, internal of private, waardoor hun zichtbaarheid wordt beperkt tot afgeleide klassen of binnen de module.

Abstracte klassen worden gedeclareerd met het sleutelwoord abstract. Ze kunnen zowel abstracte (zonder implementatie) als normale methoden bevatten. Abstracte methoden hebben geen open nodig, omdat ze impliciet worden overschreven. Abstracte klassen kunnen niet direct worden geïnstantieerd.

abstract class Shape {
    abstract fun draw()
    open fun printInfo() {
        println("Dit is een vorm.")
    }
}

Zo wordt overerving in Kotlin expliciet gecontroleerd met behulp van de modifiers open en override, wat de leesbaarheid verbetert en ongewenst overerven voorkomt.