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. Egyopenmó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.