Junior
Is de class open openbaar of privé?
sobes.tech AI
Antwoord van AI
De open klasse is openbaar. Het verschil met gewoon public is dat klassen en leden van klassen die als open zijn gedeclareerd, buiten de module waarin ze zijn gedefinieerd, kunnen worden geërfd en overschreven. public klassen zijn beschikbaar voor gebruik buiten de module, maar kunnen niet worden geërfd of overschreven tenzij ze als open zijn gemarkeerd.
Toegangsniveaus in Swift:
open: Het hoogste toegangsniveau. Beschikbaar vanuit elke module en kan worden geërfd en overschreven.public: Beschikbaar vanuit elke module, maar kan niet worden geërfd of overschreven buiten de module.internal: Standaard toegangsniveau. Alleen binnen één module beschikbaar.fileprivate: Alleen binnen het bestand waarin het is gedefinieerd.private: Het laagste toegangsniveau. Alleen binnen de declaratie waarin het is gedefinieerd.
Voorbeeld:
// Declaratie van een open klasse in ModulesA.swift
open class OpenClass {
open func openMethod() {
print("Dit is een open methode.")
}
}
// Gebruik in ModulesB.swift (ander module)
import ModulesA
class MyClass: OpenClass { // Overerving is toegestaan
override func openMethod() { // Overschrijven is toegestaan
super.openMethod()
print("Dit is een overschreven open methode.")
}
}
// Declaratie van een public klasse in ModulesA.swift
public class PublicClass {
public func publicMethod() {
print("Dit is een publieke methode.")
}
}
// Gebruik in ModulesB.swift (ander module)
import ModulesA
let instance = PublicClass()
instance.publicMethod() // Gebruik is toegestaan
// class MyOtherClass: PublicClass { // FOUT: Publieke klasse kan niet worden ondergeklasseerd buiten de module
// override func publicMethod() { // FOUT: Publieke methode kan niet worden overschreven buiten de module
// super.publicMethod()
// }
// }