Sobes.tech
Junior — Middle

Kokiu tvarka vykdomi konstruktoriai ir inicializatoriai kuriant klasės egzempliorių?

sobes.tech AI

Atsakymas iš AI

Kuriant klasės pavyzdį iOS (pavyzdžiui, Swift), vykdymo tvarka yra tokia:

  1. Pirmiausia vykdomi visų klasėje deklaruotų savybių inicializatoriai (jei jie turi numatytąsias reikšmes).
  2. Tada kviečiamas pačios klasės konstruktorius (initializatorius).
  3. Jei klasė paveldi, pirmiausia kviečiami superklasės inicializatoriai, po to – subklasės.

Pavyzdys Swift:

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

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // pirmiausia superklasės inicializatorius
        print("Child init")
    }
}

let c = Child()
// Išvestis:
// Parent init
// Child init

Taigi, pirmiausia inicijuojamos savybės, tada kviečiamas superklasės inicializatorius, po to – subklasės.