Sobes.tech
Junior

Hable sobre la cadena de herencia de clases en el lenguaje de programación Swift.

sobes.tech AI

Respuesta de la IA

Las clases en Swift soportan herencia simple. Cada clase hereda de una clase padre, formando una jerarquía. La cadena de herencia comienza con una clase base, que no hereda de nada, y se extiende hacia abajo a través de las clases hijas.

Propiedades de herencia:

  • Sobrescritura (Overriding): La clase hija puede sobrescribir la implementación de métodos, propiedades y subíndices de la clase padre. Se usa la palabra clave override.
  • Prevención de sobrescritura (Preventing Overrides): Se puede prevenir la sobrescritura de un miembro de la clase marcándolo con la palabra clave final. Toda la clase puede declararse como final.
  • Acceso a la clase padre: La clase hija puede acceder a los miembros implementados de la clase padre usando la palabra clave super. Esto es útil para llamar a la implementación de un método de la clase padre o acceder a una propiedad del padre.

Ejemplo:

// Clase base
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Implementación vacía
    }
}

// Clase hija que hereda de Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Sobrescribir el método makeNoise
    override func makeNoise() {
        print("Beep beep")
    }
}

// Clase hija que hereda de Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Añadir una nueva propiedad
    let isElectric = true

    // Sobrescribir la propiedad del clase base
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("El coche eléctrico está en movimiento")
            }
        }
    }
}

En este ejemplo:

  • Vehicle — clase base.
  • Car hereda de Vehicle. Añade la propiedad numberOfDoors y sobrescribe el método makeNoise.
  • ElectricCar hereda de Car. Añade la propiedad batteryLevel, la constante isElectric y sobrescribe la propiedad currentSpeed.

Cadena de herencia: Vehicle -> Car -> ElectricCar. Cada clase en esta cadena tiene acceso a todos los miembros públicos (o accesibles en otro contexto) de las clases superiores en la jerarquía.