Junior
Pasakykite apie klasės paveldėjimo grandinę Swift programavimo kalboje.
sobes.tech AI
Atsakymas iš AI
Swift klasės palaiko vienintelį paveldėjimą. Kiekviena klasė paveldi iš vienos tėvų klasės, sudarydama hierarchiją. Paveldėjimo grandinė prasideda nuo bazinės klasės, kuri nieko nepaveldi, ir tęsiasi žemyn per vaikų klases.
Paveldėjimo savybės:
- Perrašymas (Overriding): Vaikų klasė gali perrašyti tėvų klasės metodų, savybių ir subskryptų įgyvendinimą. Naudojamas raktinis žodis
override. - Perrašymo draudimas (Preventing Overrides): Galima užkirsti kelią nario perrašymui pažymint jį raktiniu žodžiu
final. Visa klasė gali būti paskelbta kaipfinal. - Prieiga prie tėvų klasės: Vaikų klasė gali pasiekti įgyvendintus tėvų klasės narius naudodama
superraktinį žodį. Tai naudinga kviečiant tėvų metodo įgyvendinimą arba prieigai prie tėvų savybės.
Pavyzdys:
// Bazinė klasė
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Tuščia įgyvendinimas
}
}
// Paveldi iš Vehicle
class Car: Vehicle {
var numberOfDoors = 4
// Perrašyti `makeNoise` metodą
override func makeNoise() {
print("Beep beep")
}
}
// Paveldi iš Car
class ElectricCar: Car {
var batteryLevel = 100.0
// Pridėti naują savybę
let isElectric = true
// Perrašyti `currentSpeed` savybę
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Elektrinė mašina juda")
}
}
}
}
Šiame pavyzdyje:
Vehicle— bazinė klasė.Carpaveldi išVehicle, prideda savybęnumberOfDoorsir perrašo metodąmakeNoise.ElectricCarpaveldi išCar, prideda savybesbatteryLevelirisElectric, ir perrašo savybęcurrentSpeed.
Paveldėjimo grandinė: Vehicle -> Car -> ElectricCar. Kiekviena klasė turi prieigą prie visų atvirų (ar kitame kontekste prieinamų) narių aukštesnės hierarchijos klasėse.