Sobes.tech
Junior

Ի՞նչ է տարբերությունը պարզ դասի և open դասի միջև Swift ծրագրավորման լեզվում։

sobes.tech AI

Պատասխան AI-ից

Պարզ դաս (առանց մուտքագրման փոփոխականի) ունի նախնական (internal) մուտքի մակարդակ։ Այն կարող է ժառանգվել միայն նույն մոդուլում (թիրախում):

open դասը ունի ամենաբարձր մուտքի մակարդակ և նրա անդամները (մեթոդներ, հատկություններ, ենթասկրիպտներ) կարող են վերագրել ինչպես նույն մոդուլում, այնպես էլ այլ մոդուլներում (framework-ներում, գրադարաններում):

Փոփոխիչ ժառանգություն մոդուլի ներսում ժառանգություն մոդուլի դուրս անդամների վերագրում մոդուլի ներսում անդամների վերագրում մոդուլի դուրս
internal (նախնական) Այո Ոչ Այո Ոչ
open Այո Այո Այո Այո
// Պարզ դասի օրինակ (internal նախնական) ՄՈԴՈՒԼ A-ի ներսում
class MyInternalClass {
    func internalMethod() {}
}

// `open` դասի օրինակ ՄՈԴՈՒԼ A-ի ներսում
open class MyOpenClass {
    open func openMethod() {}
}
// Օգտագործում ՄՈԴՈՒԼ A-ի ներսում
class SubInternalClassInModuleA: MyInternalClass { // ՕԿ
    override func internalMethod() {}  // ՕԿ
}

class SubOpenClassInModuleA: MyOpenClass { // ՕԿ
    override func openMethod() {} // ՕԿ
}
// Օգտագործում ՄՈԴՈՒԼ A-ից դուրս (օրինակ, B մոդուլում)
// սխալ: հնարավոր չէ ժառանգել ոչ-`open` դասից 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }

class SubOpenClassInModuleB: MyOpenClass { // ՕԿ
    override func openMethod() {} // ՕԿ
}