Junior
Jaký je rozdíl mezi jednoduchou třídou a open třídou ve Swiftu?
sobes.tech AI
Odpověď od AI
Ve Swiftu jsou všechny třídy ve výchozím nastavení final — nelze je dědit. Aby mohla být třída děděna, musí být deklarována jako open nebo public, ale mezi nimi existují důležité rozdíly:
open— nejotevřenější úroveň přístupu. Třída s modifikátoremopenmůže být děděna a její metody mohou být přepsány jak uvnitř, tak i mimo modul.public— třída je dostupná mimo modul, ale dědění a přepisování metod je možné pouze uvnitř stejného modulu.
Tím pádem, open třída umožňuje rozšiřovat a měnit chování v jiných modulech, zatímco jednoduchá (například public) — ne.
Příklad:
open class OpenClass {
open func greet() {
print("Hello from OpenClass")
}
}
public class PublicClass {
public func greet() {
print("Hello from PublicClass")
}
}
// V jiném modulu je možné dědit z OpenClass a přepisovat greet(),
// ale ne z PublicClass.