Kaip vyksta paveldėjimas Kotlin kalboje?
sobes.tech AI
Atsakymas iš AI
Kotlin paveldėjimas grindžiamas raktiniais žodžiais open ir override. Klasės ir metodai pagal numatytuosius nustatymus yra final, tai yra, jų paveldėjimas ar perrašymas nėra leidžiami. Norint leisti paveldėjimą, klasė ar metodas turi būti pažymėti raktiniu žodžiu open.
Klasės paveldėjimo kūrimui naudojamas dvitaškis : po paveldimos klasės pavadinimo, po kuriuo seka bazinės klasės pavadinimas su jos konstruktoriu.
open class Base(val name: String) {
open fun greet() {
println("Hello, $name")
}
}
Bazinio klasės metodo perrašymui paveldėtoje klasėje naudojamas override raktinis žodis.
class Derived(name: String) : Base(name) {
override fun greet() {
println("Greetings, $name")
}
}
Jei bazinė klasė turi konstruktorių su parametrais, paveldėtoji klasė turi jį iškviesti naudodama super žodį.
Kotlin palaiko daugiapakopį interfeisų paveldėjimą, bet ne klasių. Klasė gali paveldėti tik iš vienos kitos klasės.
Klasė taip pat gali pažymėti savo narius kaip protected, internal arba private, apribodama jų matomumą paveldėtojams arba modulyje.
Abstrakčios klasės deklaruojamos naudojant raktinį žodį abstract. Jos gali turėti tiek abstrakčius (be įgyvendinimo), tiek įprastus metodus. Abstrakčiai metodai nereikalauja open žodžio, nes jų perrašymas laikomas numatytu. Abstrakčios klasės tiesiogiai nėra instanciuojamos.
abstract class Shape {
abstract fun draw()
open fun printInfo() {
println("This is a shape.")
}
}
Taigi, paveldėjimas Kotlin'e aiškiai kontroliuojamas naudojant open ir override modifikatorius, kas didina skaitomumą ir apsaugo nuo nepageidaujamo paveldėjimo.