Sobes.tech
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átorem open můž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.