Sobes.tech
Junior

Kuidas toimub pärimine Kotlin keeles?

sobes.tech AI

Vastus AI-lt

Kotlinis pärandamine põhineb võtmesõnadel open ja override. Klasid ja meetodeid vaikimisi peetakse final, mis tähendab, et nende pärandamine või ülekirjutamine ei ole lubatud. Pärandi lubamiseks tuleb klass või meetod märkida võtmesõnaga open.

Pärandklassi loomine toimub pärast pärandatava klassi nime kooloni :, millele järgneb baasklassi nimi koos selle konstruktoriga.

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

Baasklassi meetodi ülekirjutamiseks pärandklassis kasutatakse võtmesõna override.

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

Kui baasklassil on konstruktor parameetritega, peab pärandklass selle kutsuma super-i kasutades.

Kotlin toetab mitme liidese pärandamist, kuid mitte klasside. Klass võib pärida ainult ühest teisest klassist.

Klass võib samuti märkida oma liikmed protected, internal või private, piirates nende nähtavust pärandklassi või mooduli piires.

Abstraktne klass deklareeritakse võtmesõnaga abstract. Nad võivad sisaldada nii abstraktseid (ilma rakenduseta) kui ka tavalisi meetodeid. Abstraktsetel meetoditel ei ole vaja open-i, kuna nende ülekirjutamine on eeldatav. Abstraktseid klasse ei saa otse instantsida.

abstract class Shape {
    abstract fun draw()
    open fun printInfo() {
        println("This is a shape.")
    }
}

Seega, Kotlinis pärandamine on selgelt kontrollitav open ja override modifikatorite abil, mis suurendab loetavust ja takistab soovimatut pärandamist.