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 { }