Sobes.tech
Junior

Wat is het verschil tussen een gewone klasse en een open klasse in de programmeertaal Swift?

sobes.tech AI

Antwoord van AI

Een eenvoudige klasse (zonder toegangsmodifier) heeft standaard een interne (internal) toegangslaag. Deze kan alleen binnen dezelfde module (doel) worden geërfd.

De open klasse heeft de hoogste toegangslaag en haar leden (methoden, eigenschappen, subscript) kunnen zowel binnen dezelfde module als in andere modules (frameworks, bibliotheken) worden overschreven.

Modifier Erfenis binnen de module Erfenis buiten de module Overriding van leden binnen de module Overriding van leden buiten de module
internal (standaard) Ja Nee Ja Nee
open Ja Ja Ja Ja
// Voorbeeld van een eenvoudige klasse (standaard internal) BINNEN module A
class MyInternalClass {
    func internalMethod() {}
}

// Voorbeeld van een open klasse BINNEN module A
open class MyOpenClass {
    open func openMethod() {}
}
// Gebruik BINNEN module A
class SubInternalClassInModuleA: MyInternalClass { // OK
    override func internalMethod() {}  // OK
}

class SubOpenClassInModuleA: MyOpenClass { // OK
    override func openMethod() {} // OK
}
// Gebruik BUITEN module A (bijvoorbeeld in module B)
// fout: kan niet erven van een niet-open klasse 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }

class SubOpenClassInModuleB: MyOpenClass { // OK
    override func openMethod() {} // OK
}