Sobes.tech
Junior

Parlez de la chaîne d'héritage des classes dans le langage de programmation Swift.

sobes.tech IA

Réponse de l'IA

Les classes en Swift prennent en charge l'héritage simple. Chaque classe hérite d'une classe parente, formant une hiérarchie. La chaîne d'héritage commence par une classe de base, qui n'hérite de rien, et s'étend vers le bas à travers les classes filles.

Propriétés de l'héritage :

  • Redéfinition (Overriding) : La classe fille peut redéfinir l'implémentation des méthodes, propriétés et sous-scripts de la classe parente. Le mot-clé override est utilisé.
  • Prévenir la redéfinition (Preventing Overrides) : Il est possible d'empêcher la redéfinition d'un membre de la classe en le marquant avec le mot-clé final. Toute la classe peut être déclarée comme final.
  • Accès à la classe parente : La classe fille peut accéder aux membres implémentés de la classe parente en utilisant le mot-clé super. Cela est utile pour appeler l'implémentation d'une méthode parent ou accéder à une propriété parent.

Exemple :

// Classe de base
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Implémentation vide
    }
}

// Classe fille héritant de Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Redéfinition de la méthode makeNoise
    override func makeNoise() {
        print("Ding ding")
    }
}

// Classe fille héritant de Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Ajout d'une nouvelle propriété
    let isElectric = true

    // Redéfinition de la propriété de la classe de base
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("La voiture électrique est en mouvement")
            }
        }
    }
}

Dans cet exemple :

  • Vehicle — classe de base.
  • Car hérite de Vehicle. Il ajoute la propriété numberOfDoors et redéfinit la méthode makeNoise.
  • ElectricCar hérite de Car. Il ajoute la propriété batteryLevel, la constante isElectric et redéfinit la propriété currentSpeed.

Chaîne d'héritage : Vehicle -> Car -> ElectricCar. Chaque classe dans cette chaîne a accès à tous les membres publics (ou accessibles dans un autre contexte) des classes supérieures dans la hiérarchie.