Junior
Koja je razlika između open i public?
sobes.tech АИ
Одговор од АИ
open omogućava nasleđivanje i prepisivanje članova u bilo kojem modulu, dok public omogućava korišćenje članova u bilo kojem modulu, ali nasleđivanje i prepisivanje su dozvoljeni samo unutar istog modula gde je član deklarisan.
| Karakteristika | open |
public |
|---|---|---|
| Pristup | Bilo koji modul | Bilo koji modul |
| Nasleđivanje | Bilo koji modul | Samo u svom modulu |
| Prepisivanje | Bilo koji modul | Samo u svom modulu |
Primer:
// 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() {
// Moguće u Modul B
}
// Greška: publicMethod je dozvoljeno koristiti, ali ne i prepisivati van Modula A
// override func publicMethod() { }
}
// Greška: PublicClass ne dozvoljava nasleđivanje van Modula A
// class SubclassOfPublic: PublicClass { }