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.