Junior — Middle
Quelle est la différence entre une déclaration de classe avec le mot-clé open et une définition de classe normale sans ce modificateur?
sobes.tech IA
Réponse de l'IA
Dans le langage Swift, par défaut, toutes les classes sont fermées à l'héritage (final). Cela signifie qu'aucune classe ne peut être héritée en dehors du module où elle est déclarée, sauf si le modificateur open ou public est utilisé.
- Une classe déclarée avec le mot-clé
openpeut être héritée et redéfinie dans n'importe quel autre module (par exemple, dans un autre framework ou application). - Une classe sans le modificateur
open(généralementpublicou sans modificateur) ne peut pas être héritée en dehors du module actuel.
Ainsi, open est le niveau d'accès le plus "ouvert" pour les classes et leurs méthodes, permettant d'étendre la fonctionnalité dans d'autres modules.
Exemple:
open class OpenClass {
open func doSomething() {}
}
public class PublicClass {
public func doSomething() {}
}
// L'héritage de OpenClass depuis un autre module est possible
// L'héritage de PublicClass depuis un autre module n'est pas possible