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