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