Junior
Фарқи байни синфи оддӣ ва синфи open дар забони барномасозии Swift чист?
sobes.tech AI
Ҷавоб аз AI
Класс од simple (беь модификатори дастрасӣ) дорои сатҳи дастрасии дохилӣ (internal) ба таври худкор мебошад. Он танҳо дар дохили ҳамин модул (мақсад) мерос гирифта мешавад.
Класс open дорои баландтарин сатҳи дастрасӣ мебошад ва аъзои он (усулҳо, хосиятҳо, субскриптҳо) метавонанд дар дохили ҳамин модул ва дар дигар модулҳо (frameworkҳо, китобхонаҳо) такрор ва иваз карда шаванд.
| Модификатор | Меросгирӣ дар дохили модул | Меросгирӣ берун аз модул | Ивазкунии аъзои дар дохили модул | Ивазкунии аъзои берун аз модул |
|---|---|---|---|---|
internal (аз пешфарз) |
Бале | Не | Бале | Не |
open |
Бале | Бале | Бале | Бале |
// Мисоли класс оддӣ (аз пешфарз internal) дар дохили модул A
class MyInternalClass {
func internalMethod() {}
}
// Мисоли класс open дар дохили модул A
open class MyOpenClass {
open func openMethod() {}
}
// Истифода дар дохили модул A
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Истифода берун аз модул A (масалан, дар модул B)
// хато: наметавон аз класс, ки `open` нест, мерос гирифт
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}