Sobes.tech
Junior — Middle

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ů):

  1. Výchozí inicializátor (default initializer) — je automaticky vytvořen, pokud všechny vlastnosti mají výchozí hodnoty a neexistují jiné inicializátory.

  2. 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.

  3. 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í.