Sobes.tech
Junior — Middle

Ҳамчун синф дар класс кадом навъ конструкторҳо татбиқ мешаванд ва онҳо чӣ гуна фарқ мекунанд?

sobes.tech AI

Ҷавоб аз AI

Дар синфи Swift одатан навъҳои зеринро амалӣ мекунад:

  1. Инициализатори пешфарз (default initializer) — автоматӣ эҷод мешавад, агар ҳамаи хосиятҳо арзишҳои пешфарз дошта бошанд ва дигар инициализаторҳо набошанд.

  2. Инициализатори бо параметрҳо (designated initializer) — инициализатори асосӣ, ки ҳамаи хосиятҳои синфро инициализатсия мекунад. Дар дохили синф истифодаи дигар инициализаторҳо тавассути self.init сурат мегирад.

  3. Инициализаторҳои қулай (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) // даъвати таъиншуда
    }
}

Ин тариқ, конструкторҳо флексибилӣ дар инициализатсияи объектҳо бо параметрҳои гуногунро таъмин мекунанд ва итоат мекунанд, ки ҳамаи хосиятҳо дуруст инициализатсия шаванд.