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() {} // ՕԿ
}