Sobes.tech
Junior

Care este diferența dintre open și public?

sobes.tech AI

Răspuns de la AI

open permite moștenirea și suprascrierea membrilor în orice modul, în timp ce public permite utilizarea membrilor în orice modul, dar moștenirea și suprascrierea sunt permise doar în cadrul aceluiași modul în care este declarat membrul.

Caracteristică open public
Acces Orice modul Orice modul
Moștenire Orice modul Doar în propriul modul
Suprascriere Orice modul Doar în propriul modul

Exemplu:

// Modul A
open class OpenClass {
    open func openMethod() { }
    public func publicMethod() { }
}

public class PublicClass {
    public func publicMethod() { }
}

// Modul B
import ModuleA

class SubclassOfOpen: OpenClass {
    override func openMethod() {
        // Posibil în Modul B
    }

    // Eroare: publicMethod este permis să fie utilizat, dar nu să fie suprascris în afara Modulului A
    // override func publicMethod() { }
}

// Eroare: PublicClass nu permite moștenirea în afara Modulului A
// class SubclassOfPublic: PublicClass { }