Junior
Aký je rozdiel medzi jednoduchou triedou a triedou open v jazyku Swift?
sobes.tech AI
Odpoveď od AI
Jednoduchá trieda (bez modifikátora prístupu) má predvolenú vnútornú (internal) úroveň prístupu. Môže byť zdedená iba v rámci toho istého modulu (cieľa).
Trieda open má najvyššiu úroveň prístupu a jej členovia (metódy, vlastnosti, subskripty) môžu byť prepísané tak v rámci toho istého modulu, ako aj v iných moduloch (frameworky, knižnice).
| Modifikátor | Dedičnosť v rámci modulu | Dedičnosť mimo modulu | Prepísanie členov v rámci modulu | Prepísanie členov mimo modulu |
|---|---|---|---|---|
internal (predvolené) |
Áno | Nie | Áno | Nie |
open |
Áno | Áno | Áno | Áno |
// Príklad jednoduchej triedy (internal predvolené) V RÁMCI modulu A
class MyInternalClass {
func internalMethod() {}
}
// Príklad open triedy V RÁMCI modulu A
open class MyOpenClass {
open func openMethod() {}
}
// Použitie V RÁMCI modulu A
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Použitie MIMO modulu A (napríklad v module B)
// chyba: nemožno dediť od ne-open triedy 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}