Sobes.tech
Junior

Mi a különbség az open és a public között?

sobes.tech MI

Válasz az MI-től

Az open lehetővé teszi a tagok öröklését és felülírását bármely modulban, míg a public lehetővé teszi a tagok használatát bármely modulban, de az öröklés és felülírás csak ugyanazon modul keretein belül engedélyezett, ahol a tag deklarálva van.

Jellemző open public
Hozzáférés Bármely modul Bármely modul
Öröklés Bármely modul Csak saját modulban
Felülírás Bármely modul Csak saját modulban

Példa:

// 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() {
        // Lehetséges Modul B-ben
    }

    // Hiba: a publicMethod használható, de nem írható felül Modul A-n kívül
    // override func publicMethod() { }
}

// Hiba: a PublicClass nem engedélyezi az öröklést Modul A-n kívül
// class SubclassOfPublic: PublicClass { }