Sobes.tech
Junior

Aký je rozdiel medzi open a public?

sobes.tech AI

Odpoveď od AI

open umožňuje dediť a prepísať členov v akomkoľvek module, zatiaľ čo public umožňuje používať členov v akomkoľvek module, ale dedenie a prepísanie sú povolené iba v rámci toho istého modulu, kde je člen deklarovaný.

Charakteristika open public
Prístup Akýkoľvek modul Akýkoľvek modul
Dedičstvo Akýkoľvek modul Len vo vlastnom module
Prepisovanie Akýkoľvek modul Len vo vlastnom module

Príklad:

// 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() {
        // Možné v Module B
    }

    // Chyba: publicMethod je povolené používať, ale nie prepísať mimo Modul A
    // override func publicMethod() { }
}

// Chyba: PublicClass neumožňuje dedičstvo mimo Modul A
// class SubclassOfPublic: PublicClass { }