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