Junior
¿Cuál es la diferencia entre open y public?
sobes.tech AI
Respuesta de la IA
open permite heredar y sobrescribir miembros en cualquier módulo, mientras que public permite usar miembros en cualquier módulo, pero la herencia y sobrescritura están permitidas solo dentro del mismo módulo donde se declara el miembro.
| Característica | open |
public |
|---|---|---|
| Acceso | Cualquier módulo | Cualquier módulo |
| Herencia | Cualquier módulo | Solo en su propio módulo |
| Sobrescritura | Cualquier módulo | Solo en su propio módulo |
Ejemplo:
// Módulo A
open class OpenClass {
open func openMethod() { }
public func publicMethod() { }
}
public class PublicClass {
public func publicMethod() { }
}
// Módulo B
import ModuleA
class SubclassOfOpen: OpenClass {
override func openMethod() {
// Posible en Módulo B
}
// Error: publicMethod está permitido usar, pero no sobrescribir fuera del Módulo A
// override func publicMethod() { }
}
// Error: PublicClass no permite heredar fuera del Módulo A
// class SubclassOfPublic: PublicClass { }