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