Junior
Care este diferența dintre open și public?
sobes.tech AI
Răspuns de la AI
open permite moștenirea și suprascrierea membrilor în orice modul, în timp ce public permite utilizarea membrilor în orice modul, dar moștenirea și suprascrierea sunt permise doar în cadrul aceluiași modul în care este declarat membrul.
| Caracteristică | open |
public |
|---|---|---|
| Acces | Orice modul | Orice modul |
| Moștenire | Orice modul | Doar în propriul modul |
| Suprascriere | Orice modul | Doar în propriul modul |
Exemplu:
// 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() {
// Posibil în Modul B
}
// Eroare: publicMethod este permis să fie utilizat, dar nu să fie suprascris în afara Modulului A
// override func publicMethod() { }
}
// Eroare: PublicClass nu permite moștenirea în afara Modulului A
// class SubclassOfPublic: PublicClass { }