Junior
Kas open klass on avalik või privaatne?
sobes.tech AI
Vastus AI-lt
open klass on avalik. Erinevus tavaliselt public-ist on see, et open-ina märgitud klassid ja liikmed, mis on open, võivad pärida ja neid üle kirjutada väljaspool moodulit, kus need on määratletud. public klassid on kasutamiseks väljast moodulist, kuid neid ei saa pärida ega üle kirjutada, kui need ei ole märgitud open-ina.
Swift-i juurdepääsutasemed:
open: Kõrgeim juurdepääsutasand. Saadaval igast moodulist ning võib pärida ja üle kirjutada.public: Saadaval igast moodulist, kuid väljaspool moodulit pärimine ja üle kirjutamine ei ole lubatud.internal: vaikimisi juurdepääsutasand. Saadaval ainult ühe mooduli piires.fileprivate: saadaval ainult failis, kus see on määratletud.private: madalaim juurdepääsutasand. Saadaval ainult selle deklaratsiooni piires, kus see on määratletud.
Näide:
// `open` klassi deklaratsioon ModulesA.swift failis
open class OpenClass {
open func openMethod() {
print("See on avatud meetod.")
}
}
// Kasutamine ModulesB.swift failis (teises moodulis)
import ModulesA
class MyClass: OpenClass { // Pärimine on lubatud
override func openMethod() { // Overridimine on lubatud
super.openMethod()
print("See on üle kirjutatud avatud meetod.")
}
}
// `public` klassi deklaratsioon ModulesA.swift failis
public class PublicClass {
public func publicMethod() {
print("See on avalik meetod.")
}
}
// Kasutamine ModulesB.swift failis (teises moodulis)
import ModulesA
let instance = PublicClass()
instance.publicMethod() // Kasutamine on lubatud
// class MyOtherClass: PublicClass { // VIGA: Avalik klass ei saa olla pärandatud väljaspool moodulit
// override func publicMethod() { // VIGA: Avalik meetod ei saa olla üle kirjutatud väljaspool moodulit
// super.publicMethod()
// }
// }