Sobes.tech
Junior — Middle

Milyen típusú konstruktorokat valósítanak meg az osztályban, és miben különböznek egymástól?

sobes.tech MI

Válasz az MI-től

Swift osztályban általában a következő típusú konstruktorokat (initializátorokat) valósítják meg:

  1. Alapértelmezett inicializáló (default initializer) — automatikusan létrejön, ha minden tulajdonságnak van alapértelmezett értéke, és nincs más inicializáló.

  2. Paraméteres inicializáló (designated initializer) — a fő inicializáló, amely minden tulajdonságot inicializál. Más inicializálók hívása az osztályon belül self.init-en keresztül történik.

  3. Kényelmi inicializálók (convenience initializer) — segéd inicializálók, amelyek a designated inicializálót hívják. Az objektumok különböző paraméterkészletekkel való egyszerűbb létrehozására szolgálnak.

Különbségek:

  • A designated inicializálók minden tulajdonságot inicializálnak és a szuperosztály inicializálóit hívják.
  • A convenience inicializálók más ugyanazon osztály inicializálóit hívják, és nem inicializálhatnak közvetlenül tulajdonságokat.

Példa:

class Person {
    var name: String
    var age: Int

    // Designated inicializáló
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    // Convenience inicializáló
    convenience init(name: String) {
        self.init(name: name, age: 0) // hívás a designated-re
    }
}

Így a konstruktorok rugalmasságot biztosítanak az objektumok különböző paraméterekkel való inicializálásában, és garantálják minden tulajdonság helyes inicializálását.