Junior — Middle
Wat is het verschil tussen een klasseverklaring met het sleutelwoord open en een normale klasse-definitie zonder deze modifier?
sobes.tech AI
Antwoord van AI
In de Swift-taal zijn standaard alle klassen gesloten voor overerving (final). Dit betekent dat zonder de modifier open of public, een klasse niet buiten de module waarin hij is gedeclareerd, kan worden overgeërfd.
- Een klasse gedeclareerd met het sleutelwoord
openkan worden overgeërfd en overschreven in elke andere module (bijvoorbeeld in een ander framework of applicatie). - Een klasse zonder de modifier
open(meestalpublicof zonder modifier) kan niet buiten de huidige module worden overgeërfd.
Dus, open is het meest "open" toegangsniveau voor klassen en hun methoden, waardoor functionaliteit in andere modules kan worden uitgebreid.
Voorbeeld:
open class OpenClass {
open func doSomething() {}
}
public class PublicClass {
public func doSomething() {}
}
// Overerving van OpenClass vanuit een andere module is mogelijk
// Overerving van PublicClass vanuit een andere module is niet mogelijk