Junior — Middle
Swiftda convenience initializer konstruktorida super metodini chaqirish mumkinmi?
sobes.tech AI
AIdan javob
Swiftda super.init chaqiruvi convenience initializer konstruktorida to'g'ridan-to'g'ri mumkin emas. Swiftdagi boshlang'ich qilish qoidalariga ko'ra, convenience boshlang'ichlar o'z sinfining boshqa boshlang'ichini chaqirishi kerak, ota sinfini emas.
Faqatgina designated initializer (asosiy boshlang'ich) super.init chaqira oladi. Shuning uchun, convenience boshlang'ich avvalo o'z sinfining designated initializerini chaqishi kerak, u esa o'z navbatida super.initni chaqiradi.
Misol:
class Parent {
init() {
print("Parent init")
}
}
class Child: Parent {
override init() {
super.init() // designated initializerda ota sinfni chaqirish
print("Child designated init")
}
convenience init(param: Int) {
self.init() // o'z sinfining designated initializerini chaqirish
print("Child convenience init param bilan \(param)")
}
}
let c = Child(param: 5)
Bu yerda, convenience init self.init()ni chaqiradi va self.init() super.init()ni chaqiradi.