Sobes.tech
Junior

Vertel over de erfenisketen van klassen in de programmeertaal Swift.

sobes.tech AI

Antwoord van AI

Swift ondersteunt enkelvoudige overerving. Elke klasse erft van één ouderklasse, waardoor een hiërarchie ontstaat. De overervingsketen begint bij een basisklasse die nergens van erft, en strekt zich uit naar beneden via de kindklassen.

Eigenschappen van overerving:

  • Overschrijven (Overriding): De kindklasse kan de implementatie van methoden, eigenschappen en subscript van de ouderklasse overschrijven. Hiervoor wordt het sleutelwoord override gebruikt.
  • Voorkomen van overschrijven (Preventing Overrides): Het is mogelijk om het overschrijven van een lid van de klasse te voorkomen door het te markeren met het sleutelwoord final. De hele klasse kan als final worden gedeclareerd.
  • Toegang tot de ouderklasse: De kindklasse kan via het sleutelwoord super toegang krijgen tot de geïmplementeerde leden van de ouderklasse. Dit is handig om de implementatie van een oudermethode aan te roepen of toegang te krijgen tot een oudereigenschap.

Voorbeeld:

// Basisklasse
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Lege implementatie
    }
}

// Kindklasse die erft van Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Overschrijven van de makeNoise-methode
    override func makeNoise() {
        print("Biep biep")
    }
}

// Kindklasse die erft van Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Toevoegen van een nieuwe eigenschap
    let isElectric = true

    // Overschrijven van de eigenschap uit de basisklasse
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Elektrische auto beweegt")
            }
        }
    }
}

In dit voorbeeld:

  • Vehicle — basisklasse.
  • Car erft van Vehicle. Het voegt de eigenschap numberOfDoors toe en overschrijft de methode makeNoise.
  • ElectricCar erft van Car. Het voegt de eigenschap batteryLevel toe, de constante isElectric en overschrijft de eigenschap currentSpeed.

Overervingsketen: Vehicle -> Car -> ElectricCar. Elke klasse in deze keten heeft toegang tot alle openbare (of in andere contexten toegankelijke) leden van de hogere klassen in de hiërarchie.