Junior
Արագ դասը հանրային է թե մասնավոր?
sobes.tech AI
Պատասխան AI-ից
open դասը հանրային է։ Տարբերությունն ուղղակի public-ից այն է, որ open-ով հայտարարած դասերն ու դասի անդամները կարող են ժառանգվել և վերաշարադրել այն մոդուլից դուրս, որտեղ նրանք սահմանվել են։ public դասերը հասանելի են օգտագործման համար մոդուլից դուրս, բայց չեն կարող ժառանգվել կամ վերաշարադրել, եթե չեն նշվել որպես open։
Swift-ում մուտքի մակարդակները՝
open: Ամենաբարձր մուտքի մակարդակ։ հասանելի է ցանկացած մոդուլից և կարող է ժառանգվել և վերաշարադրել։public: հասանելի է ցանկացած մոդուլից, բայց չի կարող ժառանգվել կամ վերաշարադրել մոդուլից դուրս։internal: Դեպի մոդուլի նախնական մուտքի մակարդակ։ հասանելի է միայն մոդուլի ներսում։fileprivate: հասանելի է միայն ֆայլի ներսում, որտեղ այն սահմանվել է։private: ամենացածր մուտքի մակարդակ։ հասանելի է միայն այն հայտարարության ներսում, որտեղ այն սահմանվել է։
Օրինակ՝
// `open` դասի հայտարարում ModulesA.swift-ում
open class OpenClass {
open func openMethod() {
print("Սա open մեթոդ է։")
}
}
// Օգտագործում ModulesB.swift-ում (այլ մոդուլ)
import ModulesA
class MyClass: OpenClass { // ժառանգել թույլատրված է
override func openMethod() { // վերաշարադրել թույլատրված է
super.openMethod()
print("Սա վերաշարադրված open մեթոդ է։")
}
}
// `public` դասի հայտարարում ModulesA.swift-ում
public class PublicClass {
public func publicMethod() {
print("Սա հանրային մեթոդ է։")
}
}
// Օգտագործում ModulesB.swift-ում (այլ մոդուլ)
import ModulesA
let instance = PublicClass()
instance.publicMethod() // Օգտագործումը թույլատրված է
// class MyOtherClass: PublicClass { // ԽՈՉ: Հանրային դասը չի կարող ժառանգվել մոդուլից դուրս
// override func publicMethod() { // ԽՈՉ: Հանրային մեթոդը չի կարող վերաշարադրել մոդուլից դուրս
// super.publicMethod()
// }
// }