Sobes.tech
Junior — Middle

V akom poradí sa vykonávajú konštruktory a inicializátory pri vytváraní inštancie triedy?

sobes.tech AI

Odpoveď od AI

Pri ustvarjanju primerka razreda v iOS (na primer, v Swiftu) je vrstni red izvajanja naslednji:

  1. Najprej se izvedejo inicializatorji vseh lastnosti, deklariranih v razredu (če imajo privzete vrednosti).
  2. Nato se pokliče konstruktor (initializator) samega razreda.
  3. Če razred deduje, se najprej pokličejo inicializatorji nadrazreda, nato pa podrazreda.

Primer v Swiftu:

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

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // najprej inicializator nadrazreda
        print("Child init")
    }
}

let c = Child()
// Izhod:
// Parent init
// Child init

Tako se najprej inicializirajo lastnosti, nato pa se pokliče inicializator nadrazreda, sledijo pa inicializatorji podrazreda.