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:
- Esiteks täidetakse kõigi klassis deklareeritud omaduste initsialiseerijad (kui neil on vaikimisi väärtused).
- Seejärel kutsutakse välja klassi enda konstruktor (initsialiseerija).
- 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.