Darsliklar Kotlin Merosxurlik (Sinf/Class)

Kotlin Kotlin Merosxurlik (Sinf/Class)

Merosxo’rlik (inheritance) — OOP ning muhim ustuni. U bir sinfga boshqa sinfning barcha xususiyatlarini “meros qilib olish” imkonini beradi. Bu kod takrorlanishini keskin kamaytiradi va sinflarni mantiqiy iyerarxiyaga soladi. “Talaba” va “O’qituvchi” — ikkovi ham “Inson”, demak umumiy xususiyatlarni “Inson”dan meros oladi.

Merosxo’rlikbir sinf (bola) boshqa sinf (ota) ning xususiyat va metodlarini o’zlashtirishi. Kotlin’da bu ikki nuqta (:) orqali amalga oshiriladi.

open — merosga ruxsat

Kotlin’da sinflar standart holatda yopiq (meros olib bo’lmaydi). Meros olishga ruxsat berish uchun open kalit so’zi qo’yiladi:

open class Inson(val ism: String) {
    fun tanishtir() {
        println("Men $ism")
    }
}

class Talaba(ism: String, val ball: Int) : Inson(ism)

fun main() {
    val t = Talaba("Master Sherkulov", 95)
    t.tanishtir()   // Inson metodini ishlatadi
    println("Ball: ${t.ball}")
}
Men Master Sherkulov
Ball: 95

open class Inson — meros olishga ruxsat berdi. class Talaba(...) : Inson(ism)Inson dan meros oldi va uning konstruktorini chaqirdi. Diqqat: Kotlin’da open shart — bu tasodifiy merosning oldini oladi.

Metodni qayta yozish (override)

Ota metodini qayta yozish uchun ota metod open, bola metod override bo’lishi kerak:

open class Inson {
    open fun rol() {
        println("Oddiy inson")
    }
}

class Oqituvchi : Inson() {
    override fun rol() {
        println("O'qituvchi")
    }
}

fun main() {
    Inson().rol()
    Oqituvchi().rol()
}
Oddiy inson
O'qituvchi

Bir xil nomli rol metodi ikki sinfda turlicha ishladi. open fun — qayta yozilishi mumkin, override fun — bola qayta yozgani. Kotlin’da bu kalit so’zlar majburiy — ular kodni aniq va xavfsiz qiladi.

super — ota metodni chaqirish

Override qilingan metod ichida ota versiyasini super bilan chaqirish mumkin:

open class Inson {
    open fun salom() = println("Salom!")
}

class Oqituvchi : Inson() {
    override fun salom() {
        super.salom()          // ota metodini chaqiradi
        println("Men o'qituvchiman")
    }
}

fun main() {
    Oqituvchi().salom()
}
Salom!
Men o'qituvchiman

super.salom() ota versiyasini chaqirdi, so’ng bola o’zining qo’shimchasini bajardi.

Xulosa

Bu bo’limda merosxo’rlikni, open bilan merosga ruxsat, : bilan meros olish, override bilan metodni qayta yozish va super ni ko’rib chiqdik. Kotlin’da meros aniq va xavfsiz. Keyingi darsda polimorfizmga o’tamiz.