Junior
Kuidas töötab pärimine Kotlinis?
sobes.tech AI
Vastus AI-lt
Kotlin pärandamine põhineb avatud klasside põhimõttel. Vaikimisi on kõik klassid suletud (final), ja klassi pärimiseks tuleb seda selgelt märkida võtmesõnaga open.
Peamised punktid:
- Avatud klassid: Vanemklass peab olema märgitud kui
open.open class Base { // ... } - Pärimine: Pärimine toimub kahe punkti (
:) abil, millele järgneb vanemklassi nimi ja vajadusel selle konstruktor.class Derived : Base() { // ... } - Meetodite ja omaduste üle kirjutamine: Vanemklassi meetodite või omaduste üle kirjutamiseks tuleb need märkida
open, ja pärilikus klassis kasutatakseoverridesõna.Kui vanemklass ei ole märgitudopen class Base { open fun process() { /* ... */ } open val value: Int = 0 } class Derived : Base() { override fun process() { /* ... */ } override val value: Int = 1 }open, siis neid üle kirjutada ei saa. - Juurdepääs vanemklassi liikmetele: Juurdepääs vanemklassi liikmetele pärilikus klassis toimub
supersõna abil.class Derived : Base() { override fun process() { super.process() // Vanemklassi meetodi kutsumine // ... } } - Konstruktorid: Kui vanemklassil on konstruktor parameetritega, peab päriliku klassi see konstruktor kutsuma oma deklaratsioonis.
open class Base(name: String) { // ... } class Derived(name: String, age: Int) : Base(name) { // ... } - Liidesed: Klass võib rakendada mitmeid liideseid, mida saab märkida pärast päriliku klassi, eraldatud komaga. Liidesed on vaikimisi "avatud" rakendamiseks.
interface MyInterface { fun doSomething() } class MyClass : Base(), MyInterface { override fun doSomething() { /* ... */ } } - Abstraktsed klassid: Abstraktsed klassid on mõeldud osalise rakenduse määratlemiseks ning sisaldavad abstraktseid meetodeid ja omadusi (
abstract), mida peavad rakendama päriliku klassid. Abstraktsed liikmed ei nõuaopen. Abstraktne klass ei nõua kaopenpärimiseks.abstract class AbsBase { abstract fun abstractMethod() open fun concreteMethod() { /* ... */ } } class AbsDerived : AbsBase() { override fun abstractMethod() { /* ... */ } }
Kokkuvõttes püüab Kotlin olla selge, nõudes open kasutamist pärimise ja üle kirjutamise lubamiseks.