Sobes.tech
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 open kan worden overgeërfd en overschreven in elke andere module (bijvoorbeeld in een ander framework of applicatie).
  • Een klasse zonder de modifier open (meestal public of 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