Sobes.tech
Junior

Kotlin тилинде мурасым кандай жүргүзүлөт?

sobes.tech AI

AIден жооп

Kotlinде мурас алуу open жана override ачкыч сөздөрүнө негизделген. Класстар жана методдор алдын ала final болуп саналат, бул алардын мурас алуу же кайра аныктоо мүмкүнчүлүгүнөн ажыратат. Мурас алуу мүмкүнчүлүгүн берүү үчүн, класс же метод open модификатору менен белгилениши керек.

Мурас алган класс түзүү үчүн, ата-эненин класс атынан кийин эки нүктө : колдонулат, андан соң ата-эненин класс аты жана анын куруучу функциясы жазылат.

open class Base(val name: String) {
    open fun greet() {
        println("Салам, $name")
    }
}

Ата-эненин классынын методуна мурасчы класста кайра аныктоо үчүн override модификатору колдонулат.

class Derived(name: String) : Base(name) {
    override fun greet() {
        println("Кууш келдиңиз, $name")
    }
}

Эгер ата-эненин классынын куруучу функциясы параметрлер менен болсо, мурасчы класс аны super ачкыч сөзү аркылуу чакырышы керек.

Kotlin көптөгөн интерфейстердин мурасын колдойт, бирок класстарды эмес. Бир класс гана бир класстан мурас алат.

Класс ошондой эле өзүнүн мүчөлөрүн protected, internal же private деп белгилеп, алардын көрүнүшүн мурасчы класстарга же модулдун ичинде чектей алат.

Аракеттүү класстар abstract ачкыч сөзү менен жарыяланат. Алар абстракттуу (ишке ашырылбаган) жана жөнөкөй методдорду камтышы мүмкүн. Аракеттүү методдор open талап кылбайт, анткени алардын кайра аныктоо күтүлөт. Аракеттүү класстар түздөн-түз инстанцияланбайт.

abstract class Shape {
    abstract fun draw()
    open fun printInfo() {
        println("Бул форма.")
    }
}

Ошентип, Kotlinдо мурас алуу ачык түрдө open жана override модификаторлору аркылуу көзөмөлдөнөт, бул окууну жакшыртат жана каалабаган мурас алууну алдын алат.