Sobes.tech
Junior

Каква е разликата между прост клас и open клас в Swift?

sobes.tech AI

Отговор от AI

В Swift по подразбиране всички класове са final — не могат да бъдат наследени. За да може един клас да бъде наследен, трябва да бъде обявен като open или public, но между тях има важни разлики:

  • open — най-отвореният ниво на достъп. Клас с модификатор open може да бъде наследен и методите му могат да бъдат презаписвани както вътре, така и извън модула.
  • public — класът е достъпен за използване извън модула, но наследяването и презаписването на методи е възможно само вътре в същия модул.

Така, open клас позволява разширяване и промяна на поведението в други модули, докато прост (например, public) — не.

Пример:

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

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

// В друг модул може да наследите OpenClass и да презапишете greet(),
// но не и PublicClass.