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:
-
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ó.
-
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. -
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.