Sobes.tech
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.