Junior
Swift dasturlash tilida oddiy sinf va open sinf o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Oddiy sinf (kirish modifikatori bo'lmagan holda) standart ravishda ichki (internal) kirish darajasiga ega. Uni faqatgina shuningdek modul (maqsad) doirasida meros qilib olish mumkin.
open sinf eng yuqori kirish darajasiga ega bo'lib, uning a'zolari (usullari, xususiyatlari, subskriptlari) ham shuningdek, modul ichida ham, boshqa modullarda (frameworklar, kutubxonalar) meros qilib olinishi va ustiga yozilishi mumkin.
| Modifikator | Moduli ichida meros | Moduli tashqarisida meros | Moduli ichida a'zolarni ustiga yozish | Moduli tashqarisida a'zolarni ustiga yozish |
|---|---|---|---|---|
internal (standart) |
Ha | Yo'q | Ha | Yo'q |
open |
Ha | Ha | Ha | Ha |
// Oddiy sinf misoli (internal standart) MODUL A ichida
class MyInternalClass {
func internalMethod() {}
}
// open sinf misoli MODUL A ichida
open class MyOpenClass {
open func openMethod() {}
}
// MODUL A ichida foydalanish
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Moduli A tashqarisida foydalanish (masalan, modul B da)
// xato: open bo'lmagan sinfdan meros olish mumkin emas 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}