0Pricing
Swift Academy · Lección

override, final y prevención de la herencia

Aprenda a sobrescribir métodos y propiedades, y a sellar clases con final.

override, final y prevención de la herencia es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Introducción

La palabra clave `override` permite que las subclases sustituyan las implementaciones de la superclase. `final` impide sobrescrituras o subclases posteriores, protegiendo el contrato de su API.

Métodos override

```swift class Animal { func speak() { print("...") } } class Cat: Animal { override func speak() { print("Meow") } } Cat().speak() // "Meow" ``` `override` es obligatorio: el compilador rechaza las ocultaciones accidentales.

Propiedades override

```swift class Shape { var area: Double { 0 } } class Square: Shape { var side: Double init(_ s: Double) { side = s } override var area: Double { side * side } } print(Square(4).area) // 16 ```

Llamar a super en un override

```swift class Logger { func log(_ msg: String) { print("[LOG] \(msg)") } } class TimedLogger: Logger { override func log(_ msg: String) { print(Date(), terminator: " ") super.log(msg) } } ```

Métodos y propiedades final

Marque un método o una propiedad como `final` para impedir que se sobrescriba: ```swift class BankAccount { final func transfer(amount: Double) { ... } // cannot override var balance: Double = 0 } ```

Clases final

Marque una clase completa como `final` para impedir que se creen subclases: ```swift final class Singleton { static let shared = Singleton() private init() {} } // class Sub: Singleton { } ❌ ``` `final` también permite optimizaciones: el compilador puede enviar las llamadas de forma estática.

¿Por qué usar final?

Ventajas de `final`: 1. Rendimiento: envío estático en lugar de buscar en la tabla virtual 2. Seguridad: el contrato de la API se aplica; las subclases no pueden romper sus invariantes 3. Documentación: indica que la clase no está diseñada para heredarse

Sobrescritura de propiedades calculadas

```swift class Vehicle { var description: String { "Vehicle" } } class Tesla: Vehicle { override var description: String { "Tesla - " + super.description } } print(Tesla().description) // "Tesla - Vehicle" ```

Sobrescritura de observadores de propiedades

```swift class A { var x = 0 } class B: A { override var x: Int { didSet { print("B.x changed to \(x)") } } } var b = B() b.x = 5 // "B.x changed to 5" ```

Prevención de sobrescrituras accidentales

Sin `override`, la ocultación accidental produce un error de compilación: ```swift class Parent { func greet() { } } class Child: Parent { func greet() { } // ❌ must write 'override' } ``` Esto protege contra errores silenciosos cuando evolucionan las API de la clase padre.

Comprobación rápida

¿Qué palabra clave impide que una clase tenga subclases?

Resumen

Puntos clave: • `override` es obligatorio al sustituir un método o una propiedad de la superclase • `super.method()` llama a la versión de la clase padre • `final func/var`: impide sobrescribir ese miembro concreto • `final class`: impide crear cualquier subclase • `final` permite el envío estático: una mejora de rendimiento gratuita Siguiente: conversión de tipos con is, as? y as!

Preguntas frecuentes

¿La lección «override, final y prevención de la herencia» es gratis?

Sí — el texto completo de «override, final y prevención de la herencia» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «override, final y prevención de la herencia»?

Aprenda a sobrescribir métodos y propiedades, y a sellar clases con final. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «override, final y prevención de la herencia»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Herencia de clases y la palabra clave super
  2. override, final y prevención de la herencia
  3. Conversión de tipos: is, as?, as! y as
  4. Deinicializadores y ciclo de vida de la memoria
← Volver a Swift Academy