Junior
Az open osztály végleges vagy nem végleges?
sobes.tech MI
Válasz az MI-től
Nem végleges. Az open kulcsszó egyértelműen jelzi, hogy örökölhetsz ebből az osztályból, és felülírhatod annak tagjait.
open class BaseClass {
open func someMethod() {
// Alapértelmezett implementáció
}
}
class DerivedClass: BaseClass {
override open func someMethod() {
// Felülírt implementáció
}
}
Hasonlítsuk össze más hozzáférési módosítókkal:
| Módosító | Öröklés | Tagok felülírása |
|---|---|---|
private |
Nem (fájl/hatókörön belül) | Nem |
fileprivate |
Nem (fájlon belül) | Nem |
internal |
Igen (modulon belül) | Igen (modulon belül) |
public |
Igen (modulon belül) | Igen (modulon belül) |
open |
Igen (bármely modulban) | Igen (bármely modulban) |
final |
Nem | Nem |
Egy final-ként megjelölt osztály vagy tag nem írható felül vagy örökölhető, így végleges lesz. Az open ezzel szemben az ellenkezője.