Junior
¿Cuál es la diferencia entre una clase simple y una clase open en el lenguaje de programación Swift?
sobes.tech AI
Respuesta de la IA
Una clase simple (sin modificador de acceso) tiene un nivel de acceso interno (internal) por defecto. Solo puede heredarse dentro del mismo módulo (objetivo).
La clase open tiene el nivel de acceso más alto y puede heredarse y sobrescribir sus miembros (métodos, propiedades, subíndices) tanto dentro del mismo módulo como en otros módulos (frameworks, bibliotecas).
| Modificador | Herencia dentro del módulo | Herencia fuera del módulo | Sobrescribir miembros dentro del módulo | Sobrescribir miembros fuera del módulo |
|---|---|---|---|---|
internal (por defecto) |
Sí | No | Sí | No |
open |
Sí | Sí | Sí | Sí |
// Ejemplo de clase simple (internal por defecto) DENTRO del módulo A
class MyInternalClass {
func internalMethod() {}
}
// Ejemplo de clase open DENTRO del módulo A
open class MyOpenClass {
open func openMethod() {}
}
// Uso DENTRO del módulo A
class SubInternalClassInModuleA: MyInternalClass { // OK
override func internalMethod() {} // OK
}
class SubOpenClassInModuleA: MyOpenClass { // OK
override func openMethod() {} // OK
}
// Uso FUERA del módulo A (por ejemplo, en el módulo B)
// error: no se puede heredar de una clase no-open 'MyInternalClass'
// class SubInternalClassInModuleB: MyInternalClass { }
class SubOpenClassInModuleB: MyOpenClass { // OK
override func openMethod() {} // OK
}