Junior
Vorbiți despre lanțul de moștenire a claselor în limbajul de programare Swift.
sobes.tech AI
Răspuns de la AI
Clasele în Swift suportă moștenirea simplă. Fiecare clasă moștenește de la o clasă părinte, formând o ierarhie. Lanțul de moștenire începe cu o clasă de bază, care nu moștenește de la nimic, și se extinde în jos prin clasele copil.
Proprietăți ale moștenirii:
- Suprascriere (Overriding): Clasa copil poate suprascrie implementarea metodelor, proprietăților și subscripturilor clasei părinte. Se folosește cuvântul cheie
override. - Prevenirea suprascrierii (Preventing Overrides): Se poate preveni suprascrierea unui membru al clasei marcându-l cu cuvântul cheie
final. Întreaga clasă poate fi declarată cafinal. - Acces la clasa părinte: Clasa copil poate accesa membrii implementați ai clasei părinte folosind cuvântul cheie
super. Acest lucru este util pentru a apela implementarea unei metode părinte sau pentru a accesa o proprietate părinte.
Exemplu:
// Clasă de bază
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Implementare goală
}
}
// Clasă copil care moștenește de la Vehicle
class Car: Vehicle {
var numberOfDoors = 4
// Suprascrierea metodei makeNoise
override func makeNoise() {
print("Bip bip")
}
}
// Clasă copil care moștenește de la Car
class ElectricCar: Car {
var batteryLevel = 100.0
// Adăugarea unei noi proprietăți
let isElectric = true
// Suprascrierea proprietății din clasa de bază
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Mașina electrică se mișcă")
}
}
}
}
În acest exemplu:
Vehicle— clasă de bază.Carmoștenește de laVehicle. Adaugă proprietateanumberOfDoorsși suprascrie metodamakeNoise.ElectricCarmoștenește de laCar. Adaugă proprietateabatteryLevel, constantaisElectricși suprascrie proprietateacurrentSpeed.
Lanțul de moștenire: Vehicle -> Car -> ElectricCar. Fiecare clasă din acest lanț are acces la toți membrii publici (sau accesibili în alt context) ai claselor superioare din ierarhie.