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
}