Sobes.tech
Junior

Ar open klasė yra galutinė ar ne?

sobes.tech AI

Atsakymas iš AI

Nepilnai finalas. Raktasžodis open aiškiai nurodo, kad galite paveldėti iš šio klaso ir perrašyti jo narius.

open class BaseClass {
    open func someMethod() {
        // Numatytoji įgyvendinimas
    }
}

class DerivedClass: BaseClass {
    override open func someMethod() {
        // Perrašytas įgyvendinimas
    }
}

Palyginkime su kitais prieigos modifikatoriais:

Modifikatorius Paveldėjimas Narių perrašymas
private Ne (failo/apskritimo ribose) Ne
fileprivate Ne (failo ribose) Ne
internal Taip (modulio ribose) Taip (modulio ribose)
public Taip (modulio ribose) Taip (modulio ribose)
open Taip (bet kuriame modulyje) Taip (bet kuriame modulyje)
final Ne Ne

Klase ar narys, pažymėtas kaip final, negali būti perrašytas ar paveldėtas, todėl jis yra galutinis. open daro priešingai.