Sobes.tech
Junior

Czy klasa open jest finalna czy nie?

sobes.tech AI

Odpowiedź od AI

Nie finalne. Słowo kluczowe open wyraźnie wskazuje, że możesz dziedziczyć po tej klasie i nadpisywać jej członków.

open class BaseClass {
    open func someMethod() {
        // Domyślna implementacja
    }
}

class DerivedClass: BaseClass {
    override open func someMethod() {
        // Nadpisana implementacja
    }
}

Porównajmy z innymi modyfikatorami dostępu:

Modyfikator Dziedziczenie Nadpisywanie członków
private Nie (w ramach pliku/zasięgu) Nie
fileprivate Nie (w ramach pliku) Nie
internal Tak (w ramach modułu) Tak (w ramach modułu)
public Tak (w ramach modułu) Tak (w ramach modułu)
open Tak (w dowolnym module) Tak (w dowolnym module)
final Nie Nie

Klasa lub członek oznaczony jako final nie może być nadpisany ani dziedziczony, co czyni go finalnym. open robi odwrotnie.