Sobes.tech
Junior

Дар бораи меросгирӣ дар Kotlin гап занед.

sobes.tech AI

Ҷавоб аз AI

Мавқеи дар Kotlin — механизмист, ки имкон медиҳад, ки синфҳои нав бар асоси синфҳои мавҷудсозӣ эҷод кунанд. Синфи нав (ҳомила ё тавлидшуда) хусусиятҳо ( тағйирёбандаҳо) ва усулҳо (функсияҳо) синфи падар (асосӣ)ро мерос мегирад. Ин такрори истифодаи коди ва эҷоди ҳиерархияҳои синфҳоро ташвиқ мекунад.

Хусусиятҳои асосӣ:

  1. Ба таври пешфарз, кушода нест: Дар Kotlin, синфҳо ва усулҳо ба таври пешфарз final мебошанд, ки маънои онро дорад, ки онҳо мерос гирифта ё бароварда намешаванд. Барои иҷозат додан ба мерос, онҳо бояд ба таври равшан бо калимаи калидии open ишора карда шаванд.
  2. Конструкторҳо: Синфи фарзанда бояд конструктори яке аз синфҳои асосиро даъват кунад (агар чандта бошад, дар ҳолати интерфейсҳо). Ин даъват ҳангоми эълони синфи фарзанда бо истифода аз (...) анҷом дода мешавад.
  3. Баровардани усулҳо ва хусусиятҳо: Барои баровардани усул ё хусусияти синфи асосӣ дар синфи фарзанда, онҳо бояд дар синфи асосӣ бо open ва дар синфи фарзанда бо override ишора карда шаванд.
  4. super: Калимаи калидии super барои дастрасӣ ба аъзои синфи асосӣ аз синфи фарзанда истифода мешавад.
  5. Мероси оддӣ бо иҷроиш: Kotlin дастгирӣ мекунад мероси оддӣ бо иҷроиш (аз як синф), аммо дастгирӣ мекунад мероси бисёрҷонибаи интерфейсҳо.

Масалан, синфи асосӣ:

// Синфи асосӣ
open class Animal(val name: String) {
    open fun makeSound() {
        println("$name садо медиҳад")
    }
}

Масалан, синфи фарзанда:

// Синфи фарзанда
class Dog(name: String) : Animal(name) {
    override fun makeSound() {
        println("$name хӯрда")
    }
}

Истифода:

// Истифодаи объектҳо
fun main() {
    val animal = Animal("Умумии ҳайвон")
    animal.makeSound() // Натиҷа: Умумии ҳайвон садо медиҳад

    val dog = Dog("Bobby")
    dog.makeSound() // Натиҷа: Bobby хӯрда
}