Jaké typy konstruktorů jsou implementovány ve třídě a v čem se liší?
sobes.tech AI
Odpověď od AI
Ve třídě Swift se obvykle implementují následující typy konstruktorů (initializátorů):
-
Výchozí inicializátor (default initializer) — je automaticky vytvořen, pokud všechny vlastnosti mají výchozí hodnoty a neexistují jiné inicializátory.
-
Inicializátor s parametry (designated initializer) — hlavní inicializátor, který inicializuje všechny vlastnosti třídy. Volání jiných inicializátorů uvnitř třídy probíhá přes
self.init. -
Convenience inicializátory (convenience initializer) — pomocné inicializátory, které volají designated inicializátor. Používají se ke zjednodušení vytváření objektů s různými sadami parametrů.
Rozdíly:
- Designated inicializátory inicializují všechny vlastnosti a volají inicializátory supertřídy.
- Convenience inicializátory volají jiné inicializátory téže třídy a nemohou přímo inicializovat vlastnosti.
Příklad:
class Person {
var name: String
var age: Int
// Designated inicializátor
init(name: String, age: Int) {
self.name = name
self.age = age
}
// Convenience inicializátor
convenience init(name: String) {
self.init(name: name, age: 0) // volání designated
}
}
Tímto způsobem konstruktor poskytují flexibilitu při inicializaci objektů s různými parametry a zajišťují správnou inicializaci všech vlastností.