Junior
Jaka jest różnica między open a public?
sobes.tech AI
Odpowiedź od AI
open pozwala na dziedziczenie i nadpisywanie członków w dowolnym module, podczas gdy public pozwala na używanie członków w dowolnym module, ale dziedziczenie i nadpisywanie są dozwolone tylko w ramach tego samego modułu, w którym członek jest zadeklarowany.
| Charakterystyka | open |
public |
|---|---|---|
| Dostęp | Dowolny moduł | Dowolny moduł |
| Dziedziczenie | Dowolny moduł | Tylko w swoim module |
| Nadpisywanie | Dowolny moduł | Tylko w swoim module |
Przykład:
// Moduł A
open class OpenClass {
open func openMethod() { }
public func publicMethod() { }
}
public class PublicClass {
public func publicMethod() { }
}
// Moduł B
import ModuleA
class SubclassOfOpen: OpenClass {
override func openMethod() {
// Możliwe w Module B
}
// Błąd: publicMethod jest dozwolone do użycia, ale nie do nadpisania poza Module A
// override func publicMethod() { }
}
// Błąd: PublicClass nie pozwala na dziedziczenie poza Module A
// class SubclassOfPublic: PublicClass { }