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