Sobes.tech
Junior

Kuo skiriasi open ir public?

sobes.tech AI

Atsakymas iš AI

open leidžia paveldėti ir perrašyti narius bet kuriame modulyje, o public leidžia naudoti narius bet kuriame modulyje, tačiau paveldėjimas ir perrašymas leidžiami tik tame pačiame modulyje, kuriame narys yra deklaruotas.

Savybė open public
Prieiga Bet kuris modulis Bet kuris modulis
Paveldėjimas Bet kuris modulis Tik savo modulyje
Perrašymas Bet kuris modulis Tik savo modulyje

Pavyzdys:

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

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

// Modulis B
import ModuleA

class SubclassOfOpen: OpenClass {
    override func openMethod() {
        // Galima Modulyje B
    }

    // Klaida: publicMethod leidžiama naudoti, bet ne perrašyti už Modulio A ribų
    // override func publicMethod() { }
}

// Klaida: PublicClass neleidžia paveldėti už Modulio A ribų
// class SubclassOfPublic: PublicClass { }