Ҳамчун синф дар класс кадом навъ конструкторҳо татбиқ мешаванд ва онҳо чӣ гуна фарқ мекунанд?
sobes.tech AI
Ҷавоб аз AI
Дар синфи Swift одатан навъҳои зеринро амалӣ мекунад:
-
Инициализатори пешфарз (default initializer) — автоматӣ эҷод мешавад, агар ҳамаи хосиятҳо арзишҳои пешфарз дошта бошанд ва дигар инициализаторҳо набошанд.
-
Инициализатори бо параметрҳо (designated initializer) — инициализатори асосӣ, ки ҳамаи хосиятҳои синфро инициализатсия мекунад. Дар дохили синф истифодаи дигар инициализаторҳо тавассути
self.initсурат мегирад. -
Инициализаторҳои қулай (convenience initializer) — инициализаторҳои ёрирасон, ки инициализатори таъиншударо даъват мекунанд. Онҳо барои содда кардани сохтани объектҳо бо маҷмӯи гуногуни параметрҳо истифода мешаванд.
Фарқиятҳо:
- Инициализаторҳои таъиншуда ҳамаи хосиятҳоро инициализатсия мекунанд ва инициализаторҳои суперклассро даъват мекунанд.
- Инициализаторҳои қулай дигар инициализаторҳои ҳамин синфро даъват мекунанд ва мустақиман хосиятҳоро инициализатсия карда наметавонанд.
Масалан:
class Person {
var name: String
var age: Int
// Инициализатори таъиншуда
init(name: String, age: Int) {
self.name = name
self.age = age
}
// Инициализатори қулай
convenience init(name: String) {
self.init(name: name, age: 0) // даъвати таъиншуда
}
}
Ин тариқ, конструкторҳо флексибилӣ дар инициализатсияи объектҳо бо параметрҳои гуногунро таъмин мекунанд ва итоат мекунанд, ки ҳамаи хосиятҳо дуруст инициализатсия шаванд.