Sobes.tech
Junior

¿Cuál es la diferencia entre una clase simple y una clase open en Swift?

sobes.tech AI

Respuesta de la IA

En Swift, por defecto, todas las clases son final — no se pueden heredar. Para que una clase pueda ser heredada, debe declararse como open o public, pero hay diferencias importantes entre ellas:

  • open — el nivel de acceso más abierto. Una clase con el modificador open puede ser heredada y sus métodos pueden ser sobreescritos tanto dentro como fuera del módulo.
  • public — la clase está disponible para su uso fuera del módulo, pero heredarla y sobreescribir métodos solo es posible dentro del mismo módulo.

Por lo tanto, una clase open permite ampliar y modificar el comportamiento en otros módulos, mientras que una clase simple (por ejemplo, public) no.

Ejemplo:

open class OpenClass {
    open func greet() {
        print("Hello from OpenClass")
    }
}

public class PublicClass {
    public func greet() {
        print("Hello from PublicClass")
    }
}

// En otro módulo, se puede heredar de OpenClass y sobreescribir greet(),
// pero no de PublicClass.