Sobes.tech
Junior — Middle

Mi a különbség az open kulcsszóval ellátott osztálybejelentés és a normál osztálydefiníció között ennek a módosítónak a hiányában?

sobes.tech MI

Válasz az MI-től

A Swift nyelvben alapértelmezés szerint minden osztály zárt öröklés szempontjából (final). Ez azt jelenti, hogy open vagy public módosító nélkül egy osztályt nem lehet örökölni azon a modulon kívül, ahol deklarálták.

  • Egy open kulcsszóval deklarált osztály örökölhető és felülírható bármely más modulban (például egy másik keretrendszerben vagy alkalmazásban).
  • Egy open módosító nélküli osztály (általában public vagy módosító nélküli) nem örökölhető meg a jelenlegi modulon kívül.

Ezért az open a leg"nyitottabb" hozzáférési szint az osztályok és azok metódusai számára, lehetővé téve a funkcionalitás bővítését más modulokban.

Példa:

open class OpenClass {
    open func doSomething() {}
}

public class PublicClass {
    public func doSomething() {}
}

// Az OpenClass öröklése más modulból lehetséges
// A PublicClass öröklése más modulból nem lehetséges