Junior
Quelle est la différence entre une classe simple et une classe open dans le langage de programmation Swift?
sobes.tech IA
Réponse de l'IA
Une classe simple (sans modificateur d'accès) a un niveau d'accès interne (internal) par défaut. Elle ne peut être héritée que dans le même module (cible).
La classe open a le niveau d'accès le plus élevé et peut être héritée et ses membres (méthodes, propriétés, sous-scripts) peuvent être redéfinis aussi bien dans le même module que dans d'autres modules (frameworks, bibliothèques).
| Modificateur | Héritage dans le module | Héritage hors du module | Redéfinition des membres dans le module | Redéfinition des membres hors du module |
|---|---|---|---|---|
internal (par défaut) |
Oui | Non | Oui | Non |
open |
Oui | Oui | Oui | Oui |
// Exemple de classe simple (par défaut internal) DANS le module A
class MyInternalClass {
func internalMethod() {}
}
// Exemple de classe open DANS le module A
open class MyOpenClass {
open func openMethod() {}
}
// Utilisation DANS le module A
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Utilisation HORS du module A (par exemple, dans le module B)
// erreur : impossible d'hériter d'une classe non-open 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}