Junior
Jaký je rozdíl mezi open a public?
sobes.tech AI
Odpověď od AI
open umožňuje dědit a přepisovat členy v jakémkoli modulu, zatímco public umožňuje používat členy v jakémkoli modulu, ale dědění a přepisování jsou povoleny pouze v rámci stejného modulu, ve kterém je člen deklarován.
| Charakteristika | open |
public |
|---|---|---|
| Přístup | Jakýkoli modul | Jakýkoli modul |
| Dědění | Jakýkoli modul | Pouze ve vlastním modulu |
| Přepisování | Jakýkoli modul | Pouze ve vlastním modulu |
Pří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 modulu B
}
// Chyba: publicMethod je povoleno používat, ale nelze přepsat mimo modul A
// override func publicMethod() { }
}
// Chyba: PublicClass neumožňuje dědit mimo modul A
// class SubclassOfPublic: PublicClass { }