Junior
Kuo skiriasi paprasta klasė nuo open klasės Swift programavimo kalboje?
sobes.tech AI
Atsakymas iš AI
Paprastas klasė (be prieigos modifikatoriaus) turi numatytąją (internal) prieigos lygį. Ją galima paveldėti tik to paties modulio (tikslo) ribose.
open klasė turi aukščiausią prieigos lygį, ir jos nariai (metodai, savybės, subskryptai) gali būti perrašyti tiek to paties modulio, tiek kitų modulių (framework'ų, bibliotekų) viduje.
| Modifikatorius | Paveldėjimas modulyje | Paveldėjimas už modulio ribų | Narių perrašymas modulyje | Narių perrašymas už modulio ribų |
|---|---|---|---|---|
internal (numatytas) |
Taip | Ne | Taip | Ne |
open |
Taip | Taip | Taip | Taip |
// Paprasto klasės pavyzdys (internal numatytas) MODULYJE A
class MyInternalClass {
func internalMethod() {}
}
// `open` klasės pavyzdys MODULYJE A
open class MyOpenClass {
open func openMethod() {}
}
// Naudojimas MODULYJE A
class SubInternalClassInModuleA: MyInternalClass { // GERAI
override func internalMethod() {} // GERAI
}
class SubOpenClassInModuleA: MyOpenClass { // GERAI
override func openMethod() {} // GERAI
}
// Naudojimas už modulio ribų (pvz., B modulyje)
// klaida: negalima paveldėti iš non-open klasės 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // GERAI
override func openMethod() {} // GERAI
}