Junior — Middle
Milyen sorrendben hajtódnak végre a konstruktorok és az inicializálók osztálypéldány létrehozásakor?
sobes.tech MI
Válasz az MI-től
Amikor egy osztály példányát hozzuk létre iOS-ben (például Swift-ben), a végrehajtási sorrend a következő:
- Először minden, az osztályban deklarált tulajdonság inicializálója (ha van alapértelmezett értéke) fut le.
- Ezután meghívásra kerül az osztály saját konstruktorja (initializálója).
- Ha az osztály öröklődik, először a szuperosztály inicializálói futnak le, majd az alosztályé.
Példa Swift-ben:
class Parent {
var name: String = "Parent"
init() {
print("Parent init")
}
}
class Child: Parent {
var age: Int = 10
override init() {
super.init() // először a szuperosztály inicializálója
print("Child init")
}
}
let c = Child()
// Kimenet:
// Parent init
// Child init
Így először a tulajdonságok inicializálódnak, majd a szuperosztály inicializálója hívódik meg, utána az alosztályé.