Sobes.tech
Junior

Mi a különbség az egyszerű osztály és az open osztály között Swiftben?

sobes.tech MI

Válasz az MI-től

Swiftben alapértelmezés szerint minden osztály final — nem örökölhetők. Ahhoz, hogy egy osztály örökölhető legyen, open vagy public-ként kell deklarálni, de közöttük fontos különbségek vannak:

  • open — a legnyitottabb hozzáférési szint. Egy open módosítóval ellátott osztály örökölhető, és metódusai felülírhatók mind a modulon belül, mind kívül.
  • public — az osztály elérhető a modulon kívül, de öröklés és metódusok felülírása csak ugyanazon a modullal belül lehetséges.

Így az open osztály lehetővé teszi a viselkedés bővítését és módosítását más modulokban, míg egy egyszerű (például public) osztály nem.

Példa:

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

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

// Egy másik modulban örökölhet az OpenClass-ból és felülírhatja a greet() metódust,
// de a PublicClass-ból nem.