Sobes.tech
Junior

Koja je razlika između open i public?

sobes.tech АИ

Одговор од АИ

open omogućava nasleđivanje i prepisivanje članova u bilo kojem modulu, dok public omogućava korišćenje članova u bilo kojem modulu, ali nasleđivanje i prepisivanje su dozvoljeni samo unutar istog modula gde je član deklarisan.

Karakteristika open public
Pristup Bilo koji modul Bilo koji modul
Nasleđivanje Bilo koji modul Samo u svom modulu
Prepisivanje Bilo koji modul Samo u svom modulu

Primer:

// 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() {
        // Moguće u Modul B
    }

    // Greška: publicMethod je dozvoljeno koristiti, ali ne i prepisivati van Modula A
    // override func publicMethod() { }
}

// Greška: PublicClass ne dozvoljava nasleđivanje van Modula A
// class SubclassOfPublic: PublicClass { }