Sobes.tech
Junior — Middle

Millises järjekorras toimuvad konstruktorid ja initsialiseerijad klassi eksemplari loomisel?

sobes.tech AI

Vastus AI-lt

Kui luua klassi näide iOS-is (näiteks Swiftis), siis täitmise järjekord on järgmine:

  1. Esiteks täidetakse kõigi klassis deklareeritud omaduste initsialiseerijad (kui neil on vaikimisi väärtused).
  2. Seejärel kutsutakse välja klassi enda konstruktor (initsialiseerija).
  3. Kui klass pärib teiselt klassilt, siis kõigepealt kutsutakse välja superklassi initsialiseerijad, seejärel alampärandi.

Näide Swiftis:

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

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // kõigepealt superklassi initsialiseerija
        print("Child init")
    }
}

let c = Child()
// Väljund:
// Parent init
// Child init

Seega, kõigepealt initsialiseeritakse omadused, siis kutsutakse välja superklassi initsialiseerija ja lõpuks alampärandi initsialiseerija.