Sobes.tech
Junior

Ako sa vykonáva dedičstvo v jazyku Kotlin?

sobes.tech AI

Odpoveď od AI

Dedičnosť v Kotlin je založená na kľúčových slovách open a override. Triedy a metódy sú predvolene final, čo znamená, že nemôžu byť dedené alebo prepísané. Aby bolo možné dediť, trieda alebo metóda musia byť označené modifikátorom open.

Na vytvorenie odvodené triedy sa používa dvojbodka : za názvom základnej triedy, za ktorou nasleduje názov základnej triedy s jej konštruktorom.

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

Na prepísanie metódy základnej triedy v odvodené triede sa používa modifikátor override.

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

Ak má základná trieda konštruktor s parametrami, odvodená trieda ho musí volať pomocou kľúčového slova super.

Kotlin podporuje viacnásobné dedičstvo rozhraní, ale nie tried. Trieda môže dediť iba od jednej triedy.

Trieda môže tiež označiť svojich členov ako protected, internal alebo private, čím obmedzí ich viditeľnosť pre odvodené triedy alebo v rámci modulu.

Abstraktné triedy sa deklarujú pomocou kľúčového slova abstract. Môžu obsahovať ako abstraktné (bez implementácie), tak aj bežné metódy. Abstraktné metódy nevyžadujú open, pretože sa predpokladá, že budú prepísané. Abstraktné triedy nemôžu byť priamo inštancované.

abstract class Shape {
    abstract fun draw()
    open fun printInfo() {
        println("Toto je tvar.")
    }
}

Takto je dedičnosť v Kotlin explicitne kontrolovaná pomocou modifikátorov open a override, čo zvyšuje čitateľnosť a zabraňuje nechcenému dedičstvu.