Junior
Je trieda open finálna alebo nie?
sobes.tech AI
Odpoveď 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 |
final oznacza, że klasa lub członek nie może być nadpisany lub dziedziczony, czyniąc go finalnym. open robi coś odwrotnego.