Sobes.tech
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
}