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.