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
overridegebruikt. - 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 alsfinalworden gedeclareerd. - Toegang tot de ouderklasse: De kindklasse kan via het sleutelwoord
supertoegang 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.Carerft vanVehicle. Het voegt de eigenschapnumberOfDoorstoe en overschrijft de methodemakeNoise.ElectricCarerft vanCar. Het voegt de eigenschapbatteryLeveltoe, de constanteisElectricen overschrijft de eigenschapcurrentSpeed.
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.