Junior
Swift proqramlaşdırma dilində sadə sinif ilə open sinif arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Sadə sinif (giriş modifikatoru olmadan) varsayılan olaraq daxili (internal) giriş səviyyəsinə malikdir. Bu, yalnız eyni modul (məqsəd) daxilində miras alına bilər.
open sinif ən yüksək giriş səviyyəsinə malikdir və onun üzvləri (metodlar, xüsusiyyətlər, alt skriptlər) həm eyni modul daxilində, həm də digər modullarda (frameworklər, kitabxanalar) miras alınaraq və üzərinə yazıla bilər.
| Modifikator | Modul daxilində miras | Modul xaricində miras | Modul daxilində üzvlərin üzərinə yazılması | Modul xaricində üzvlərin üzərinə yazılması |
|---|---|---|---|---|
internal (varsayılan) |
Bəli | Xeyr | Bəli | Xeyr |
open |
Bəli | Bəli | Bəli | Bəli |
// Sadə sinif nümunəsi (internal varsayılan) MODUL A daxilində
class MyInternalClass {
func internalMethod() {}
}
// `open` sinif nümunəsi MODUL A daxilində
open class MyOpenClass {
open func openMethod() {}
}
// İstifadə MODUL A daxilində
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// MODUL A xaricində istifadə (məsələn, modul B-də)
// səhv: `open` olmayan sinifdən miras alınmaz 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}