Sobes.tech
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 { }