Sobes.tech
Junior — Middle

Kokie konstruktorių tipai įgyvendinami klasėje ir kuo jie skiriasi?

sobes.tech AI

Atsakymas iš AI

Swift klasėje paprastai įgyvendinami šie konstruktorių (pradinių) tipai:

  1. Numatytasis inicializatorius (default initializer) — automatiškai sukuriamas, jei visi savybės turi numatytąsias reikšmes ir nėra kitų inicializatorių.

  2. Su parametrais (designated initializer) — pagrindinis inicializatorius, kuris inicializuoja visas klasės savybes. Kito inicializatoriaus kvietimas klasėje vyksta per self.init.

  3. Patogūs inicializatoriai (convenience initializer) — pagalbiniai inicializatoriai, kurie kviečia pagrindinį inicializatorių. Jie naudojami norint supaprastinti objektų kūrimą su skirtingais parametrų rinkiniais.

Skirtumai:

  • Designated inicializatoriai inicializuoja visas savybes ir kviečia superklasės inicializatorius.
  • Convenience inicializatoriai kviečia kitus tos pačios klasės inicializatorius ir tiesiogiai savybių inicializuoti negali.

Pavyzdys:

class Person {
    var name: String
    var age: Int

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

    // Convenience inicializatorius
    convenience init(name: String) {
        self.init(name: name, age: 0) // kviečia pagrindinį
    }
}

Šiuo būdu konstruktoriai suteikia lankstumą kurti objektus su skirtingais parametrais ir užtikrina teisingą visų savybių inicializaciją.