Sobes.tech
Junior

Care este diferența dintre o clasă simplă și o clasă open în Swift?

sobes.tech AI

Răspuns de la AI

În Swift, în mod implicit, toate clasele sunt final — nu pot fi moștenite. Pentru ca o clasă să poată fi moștenită, trebuie declarată ca open sau public, dar există diferențe importante între ele:

  • open — cel mai deschis nivel de acces. O clasă cu modificatorul open poate fi moștenită și metodele sale pot fi suprascrise atât în interiorul, cât și în afara modulului.
  • public — clasa este disponibilă pentru utilizare în afara modulului, dar moștenirea și suprascrierea metodelor sunt posibile doar în același modul.

Astfel, o clasă open permite extinderea și modificarea comportamentului în alte module, în timp ce o clasă simplă (de exemplu, public) — nu.

Exemplu:

open class OpenClass {
    open func greet() {
        print("Hello from OpenClass")
    }
}

public class PublicClass {
    public func greet() {
        print("Hello from PublicClass")
    }
}

// În alt modul, se poate moșteni de la OpenClass și suprascrie greet(),
// dar nu și de la PublicClass.