Sobes.tech
Junior

Kotlin'da bir sinfda bir nechta konstruktorlarni qanday amalga oshirish mumkin?

sobes.tech AI

AIdan javob

Kotlin'da bir nechta quruvchilarni yaratish uchun asosiy quruvchi va zarur bo'lsa, bir yoki bir nechta ikkilamchi quruvchilar ishlatiladi.

Asosiy quruvchi to'g'ridan-to'g'ri sinf sarlavhasida e'lon qilinadi:

class MyClass(primaryParam1: String, primaryParam2: Int) {
    // Sinfning tanasi
}

Ikkinchi darajali quruvchilar constructor kalit so'zi yordamida e'lon qilinadi:

class MyClass {
    // Asosiy quruvchi (bilinadigan yoki bilmaydigan)

    constructor(param1: String) {
        // Ikkinchi darajali quruvchi 1 ning mantiqi
    }

    constructor(param1: String, param2: Int) {
        // Ikkinchi darajali quruvchi 2 ning mantiqi
    }
}

Agar sinfda asosiy quruvchi bo'lsa, har bir ikkinchi darajali quruvchi asosiy quruvchiga this() kalit so'zi yordamida delegatsiya qilishi kerak:

class MyClass(primaryParam: String) {

    constructor(secondaryParam: Int) : this(secondaryParam.toString()) {
        // Ikkinchi darajali quruvchi mantiqi
    }
}

Shuningdek, bir nechta ikkinchi darajali quruvchilar asosiy quruvchiga yoki boshqa ikkinchi darajali quruvchilarga delegatsiya qilishi mumkin (delegatsiya hierarhiyasiga rioya qilgan holda):

class MyClass(primaryParam: String) {

    constructor(param1: String, param2: Int) : this(param1) {
        // Ikkinchi darajali quruvchi 1 ning mantiqi
    }

    constructor(param1: String, param2: Int, param3: Boolean) : this(param1, param2) {
        // Ikkinchi darajali quruvchi 2 ning mantiqi
    }
}

Muhim nuqtalar:

  • Asosiy quruvchining tanasi ikkinchi darajali quruvchilarning tanasidan oldin bajariladi.
  • Asosiy quruvchining sarlavhasida e'lon qilingan xususiyatlar ikkinchi darajali quruvchilarning tanasida mavjud bo'lishi mumkin.
  • Kotlin'da, tavsiya etiladi, asosiy quruvchini ishlatish va imkon qadar ikkinchi darajali quruvchilardan qochish, nomlangan argumentlar yoki fabrik metodlarini afzal ko'rish.