Junior
Open sinfi ictimai və ya özəlmi?
sobes.tech Süni İntellekt
AI-dan cavab
open sinfi ümumi girişlidir. Sadə public ilə müqayisədə fərqi odur ki, open kimi elan edilmiş siniflər və sinif üzvləri, onları təyin edən modul xaricində miras alınabilir və yenidən təyin edilə bilər. public siniflər modul xaricində istifadə üçün əlçatandır, lakin open kimi işarələnmədikdə, miras alınması və ya yenidən təyin edilməsi mümkün deyil.
Swift-də giriş səviyyələri:
open: Ən yüksək giriş səviyyəsidir. Hər hansı bir modüldən əlçatandır və miras alınabilir və yenidən təyin edilə bilər.public: Hər hansı bir modüldən əlçatandır, lakin modul xaricində miras alınması və ya yenidən təyin edilməsi mümkün deyil.internal: Varsayılan giriş səviyyəsidir. Yalnız bir modul daxilində əlçatandır.fileprivate: Yalnız təyin olunduğu fayl daxilində əlçatandır.private: Ən aşağı giriş səviyyəsidir. Yalnız təyin olunduğu elan daxilində əlçatandır.
Nümunə:
// ModulesA.swift-də `open` sinfi elan etmək
open class OpenClass {
open func openMethod() {
print("Bu, open metodudur.")
}
}
// ModulesB.swift-də istifadə (başqa modul)
import ModulesA
class MyClass: OpenClass { // Miras alma icazəlidir
override func openMethod() { // Yenidən təyin etmək icazəlidir
super.openMethod()
print("Bu, yenidən təyin olunmuş open metodudur.")
}
}
// ModulesA.swift-də `public` sinfi elan etmək
public class PublicClass {
public func publicMethod() {
print("Bu, ictimai metod.")
}
}
// ModulesB.swift-də istifadə (başqa modul)
import ModulesA
let instance = PublicClass()
instance.publicMethod() // İstifadə icazəlidir
// class MyOtherClass: PublicClass { // XƏTA: Public sinfi modul xaricində alt sinifə almaq mümkün deyil
// override func publicMethod() { // XƏTA: Public metod modul xaricində yenidən təyin edilə bilməz
// super.publicMethod()
// }
// }