Sobes.tech
Junior

Чӣ гуна дар Kotlin чандин конструктор дар як синф амалӣ кардан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Барои эҷоди чандин конструктор дар Kotlin, истифода мешавад конструктори асосӣ ва, агар лозим бошад, яке ё чанд конструктори ёрирасон.

Конструктори асосӣ мустақиман дар сарлавҳаи синф эълон мешавад:

class MyClass(primaryParam1: String, primaryParam2: Int) {
    // Танаи синф
}

Конструкторҳои ёрирасон бо калимаи калидии constructor эълон мешаванд:

class MyClass {
    // Конструктори асосӣ (ғайрирасмӣ ё расмӣ)

    constructor(param1: String) {
        // Мантиқи конструктори ёрирасон 1
    }

    constructor(param1: String, param2: Int) {
        // Мантиқи конструктори ёрирасон 2
    }
}

Агар синф дорои конструктори асосӣ бошад, ҳар як конструктори ёрирасон бояд занҷирро ба конструктори асосӣ бо истифода аз this() гузаронад:

class MyClass(primaryParam: String) {

    constructor(secondaryParam: Int) : this(secondaryParam.toString()) {
        // Мантиқи конструктори ёрирасон
    }
}

Мумкин аст, ки чанд конструктори ёрирасон мавҷуд бошанд, ки ба конструктори асосӣ ё дигар конструкторҳои ёрирасон занҷирбандӣ кунанд (аз рӯи ҳокимияти занҷирбандӣ):

class MyClass(primaryParam: String) {

    constructor(param1: String, param2: Int) : this(param1) {
        // Мантиқи конструктори ёрирасон 1
    }

    constructor(param1: String, param2: Int, param3: Boolean) : this(param1, param2) {
        // Мантиқи конструктори ёрирасон 2
    }
}

Мавзӯъҳои муҳим:

  • Танаи конструктори асосӣ пеш аз танаи конструкторҳои ёрирасон иҷро мешавад.
  • Хусусиятҳое, ки дар сарлавҳаи конструктори асосӣ эълон шудаанд, метавонанд дар танаи конструкторҳои ёрирасон дастрас бошанд.
  • Дар Kotlin, тавсия дода мешавад, ки аз истифодаи конструкторҳои ёрирасон худдорӣ кунед ва ба ҷои он аргументҳои номгузоришударо ё усулҳои фабрика истифода баред.