Sobes.tech
Junior — Middle

V jakém pořadí se při vytváření instance třídy provádějí konstruktory a inicializátory?

sobes.tech AI

Odpověď od AI

Při vytváření instance třídy v iOS (například ve Swiftu) je pořadí provádění následující:

  1. Nejprve jsou spuštěny inicializátory všech vlastností deklarovaných ve třídě (pokud mají výchozí hodnoty).
  2. Poté je volán konstruktor (initializátor) samotné třídy.
  3. Pokud třída dědí, nejprve jsou volány inicializátory nadtřídy a poté podtřídy.

Příklad ve Swiftu:

class Parent {
    var name: String = "Parent"
    init() {
        print("Parent init")
    }
}

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // nejprve inicializátor nadtřídy
        print("Child init")
    }
}

let c = Child()
// Výstup:
// Parent init
// Child init

Tímto způsobem jsou nejprve inicializovány vlastnosti, poté je volán inicializátor nadtřídy a nakonec inicializátor podtřídy.