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
openkulcsszó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
openmódosító nélküli osztály (általábanpublicvagy 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