Sobes.tech
Junior — Middle

Klassda qanday turdagi konstruktorlar amalga oshiriladi va ular qanday farq qiladi?

sobes.tech AI

AIdan javob

Swift sinfida odatda quyidagi turdagi konstruktorlar (initializatorlar) amalga oshiriladi:

  1. Standart initializator (default initializer) — agar barcha xususiyatlar uchun standart qiymatlar bo‘lsa va boshqa initializatorlar bo‘lmasa, avtomatik ravishda yaratiladi.

  2. Parametrli initializator (designated initializer) — asosiy initializator bo‘lib, u sinfning barcha xususiyatlarini initializatsiya qiladi. Sinf ichida boshqa initializatorlarni chaqirish self.init orqali amalga oshiriladi.

  3. Qulay initializatorlar (convenience initializer) — yordamchi initializatorlar bo‘lib, ular designated initializatorni chaqiradi. Ular turli parametrlar to‘plami bilan obyekt yaratishni soddalashtirish uchun ishlatiladi.

Farqlar:

  • Designated initializatorlar barcha xususiyatlarni initializatsiya qiladi va superklassning initializatorlarini chaqiradi.
  • Convenience initializatorlar o‘z sinfidagi boshqa initializatorlarni chaqiradi va to‘g‘ridan-to‘g‘ri xususiyatlarni initializatsiya qila olmaydi.

Misol:

class Person {
    var name: String
    var age: Int

    // Designated initializator
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    // Convenience initializator
    convenience init(name: String) {
        self.init(name: name, age: 0) // designated chaqiruv
    }
}

Shu tarzda, konstruktorlar obyektlarni turli parametrlar bilan yaratishda moslashuvchanlikni ta'minlaydi va barcha xususiyatlarning to‘g‘ri initializatsiyasini kafolatlaydi.