Sobes.tech
Junior

Open sinfi jamoatmi yoki shaxsiymi?

sobes.tech AI

AIdan javob

open sinfı, umumiy erişimlidir. Faqat public bilan taqqoslaganda, open sifatida belgilangan sinflar va sinf a'zolari, ularni belgilagan moduli tashqarisida meros qilib olinishlari va ustunlik qilishlari mumkin. public sinflar moduli tashqarisida foydalanish uchun mavjud, ammo ular open sifatida belgilangan bo'lmasa, meros qilib olinishi yoki ustunlik qilishi mumkin emas.

Swift'da kirish darajalari:

  • open: Eng yuqori kirish darajasi. Har qanday modildan foydalanilishi mumkin va meros qilib olinishi va ustunlik qilishi mumkin.
  • public: Har qanday modildan foydalanilishi mumkin, ammo moduli tashqarisida meros qilib olinishi yoki ustunlik qilishi mumkin emas.
  • internal: Standart kirish darajasi. Faqatgina bir modil ichida foydalaniladi.
  • fileprivate: Faqatgina belgilangan fayl ichida foydalaniladi.
  • private: Eng past kirish darajasi. Faqatgina belgilangan e'lon ichida foydalaniladi.

Misol:

// ModulesA.swift ichida `open` sinf e'lon qilish
open class OpenClass {
    open func openMethod() {
        print("Bu open metod.")
    }
}

// ModulesB.swift'da foydalanish (boshqa modul)
import ModulesA

class MyClass: OpenClass { // Meros olish ruxsat etilgan
    override func openMethod() { // Ustunlik qilish ruxsat etilgan
        super.openMethod()
        print("Bu ustunlik qilingan open metod.")
    }
}
// ModulesA.swift'da `public` sinf e'lon qilish
public class PublicClass {
    public func publicMethod() {
        print("Bu public metod.")
    }
}

// ModulesB.swift'da foydalanish (boshqa modul)
import ModulesA

let instance = PublicClass()
instance.publicMethod() // Foydalanish ruxsat etilgan

// class MyOtherClass: PublicClass { // XATO: Public sinf modul tashqarisida meros qilib olinmaydi
//     override func publicMethod() { // XATO: Public metod modul tashqarisida ustunlik qilmaydi
//         super.publicMethod()
//     }
// }