Junior
Quelle est la différence entre open et public ?
sobes.tech IA
Réponse de l'IA
open permet d'hériter et de redéfinir des membres dans n'importe quel module, tandis que public permet d'utiliser des membres dans n'importe quel module, mais l'héritage et la redéfinition ne sont autorisés que dans le même module où le membre est déclaré.
| Caractéristique | open |
public |
|---|---|---|
| Accès | N'importe quel module | N'importe quel module |
| Héritage | N'importe quel module | Seulement dans son propre module |
| Redéfinition | N'importe quel module | Seulement dans son propre module |
Exemple:
// Module A
open class OpenClass {
open func openMethod() { }
public func publicMethod() { }
}
public class PublicClass {
public func publicMethod() { }
}
// Module B
import ModuleA
class SubclassOfOpen: OpenClass {
override func openMethod() {
// Possible dans Module B
}
// Erreur : publicMethod est autorisé à utiliser, mais pas à redéfinir en dehors de Module A
// override func publicMethod() { }
}
// Erreur : PublicClass ne permet pas l'héritage en dehors de Module A
// class SubclassOfPublic: PublicClass { }