Junior
Je třída open finální nebo ne?
sobes.tech AI
Odpověď od AI
Nepřesné. Klíčové slovo open jasně naznačuje, že z této třídy můžete dědit a přepisovat její členy.
open class BaseClass {
open func someMethod() {
// Výchozí implementace
}
}
class DerivedClass: BaseClass {
override open func someMethod() {
// Přepsaná implementace
}
}
Porovnejme s jinými modifikátory přístupu:
| Modifikátor | Dědění | Přepisování členů |
|---|---|---|
private |
Ne (v rámci souboru/rozsahu) | Ne |
fileprivate |
Ne (v rámci souboru) | Ne |
internal |
Ano (v rámci modulu) | Ano (v rámci modulu) |
public |
Ano (v rámci modulu) | Ano (v rámci modulu) |
open |
Ano (v jakémkoli modulu) | Ano (v jakémkoli modulu) |
final |
Ne | Ne |
Třída nebo člen označený jako final nelze přepsat nebo dědit, čímž se stává finální. open dělá opak.