Sobes.tech
Junior

Mis vahe on open ja public?

sobes.tech AI

Vastus AI-lt

open võimaldab pärandada ja üle kirjutada liikmeid igas modulites, samas kui public võimaldab kasutada liikmeid igas modulites, kuid pärandamine ja üle kirjutamine on lubatud ainult samas modulites, kus liige on deklareeritud.

Omadus open public
Juurdepääs Igas modulites Igas modulites
Pärandamine Igas modulites Ainult oma modulites
Üle kirjutamine Igas modulites Ainult oma modulites

Näide:

// 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() {
        // Võimalik modul B-s
    }

    // Viga: publicMethod on lubatud kasutada, kuid mitte üle kirjutada väljaspool Moduli A
    // override func publicMethod() { }
}

// Viga: PublicClass ei võimalda pärandamist väljaspool Moduli A
// class SubclassOfPublic: PublicClass { }