Control de acceso en Swift: open, public, internal, fileprivate y private

La diferencia importa al diseñar librerías. public expone el tipo pero impide que el usuario lo subclasifique o sobreescriba sus métodos. open permite ambas cosas. La regla: usa public por defecto para APIs de librería y solo open cuando quieras que el usuario extienda el comportamiento:

// Librería
public class Motor {
    public func arrancar() {}
    open func configurar() {}  // extensible por el usuario
}

// Módulo del usuario
class MotorTurbo: Motor {
    override func configurar() { super.configurar() }
    // override func arrancar() {}  // Error: 'arrancar' no es open
}

private(set): solo escritura privada

public struct Contador {
    public private(set) var valor = 0  // lectura publica, escritura privada
    public mutating func incrementar() { valor += 1 }
}

var c = Contador()
c.incrementar()
print(c.valor)  // 1
// c.valor = 99  // Error: setter privado

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP