Junior
Pastāstiet par klases manto ķēdi Swift programmēšanas valodā.
sobes.tech AI
Atbilde no AI
Swift klases atbalsta tikai vienu mantošanu. Katra klase manto no viena vecāku klases, veidojot hierarhiju. Mantošanas ķēde sākas ar pamata klasi, kas no nekā ne manto, un turpinās lejup caur bērnu klasēm.
Mantošanas īpašības:
- Pārrakstīšana (Overriding): Bērnu klase var pārrakstīt vecāku klases metožu, īpašību un subskriptu īstenojumu. Tiek izmantots atslēgvārds
override. - Pārrakstīšanas aizliegums (Preventing Overrides): Var novērst klases locekļa pārrakstīšanu, to atzīmējot ar
final. Visa klase var tikt deklarēta kāfinal. - Piekļuve vecāku klasei: Bērnu klase var piekļūt īstenotajiem vecāku klases locekļiem, izmantojot
superatslēgvārdu. Tas ir noderīgi, izsaucot vecāku metodes īstenojumu vai piekļūstot vecāku īpašībai.
Piemērs:
// Pamata klase
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Tukša īstenošana
}
}
// Manto no Vehicle
class Car: Vehicle {
var numberOfDoors = 4
// Pārrakstīt `makeNoise` metodi
override func makeNoise() {
print("Bip bip")
}
}
// Manto no Car
class ElectricCar: Car {
var batteryLevel = 100.0
// Pievienot jaunu īpašību
let isElectric = true
// Pārrakstīt `currentSpeed` īpašību
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Elektriskais auto kustas")
}
}
}
}
Šajā piemērā:
Vehicle— pamata klase.Carmanto noVehicle, pievieno īpašībunumberOfDoorsun pārraksta metodimakeNoise.ElectricCarmanto noCar, pievieno īpašībasbatteryLevelunisElectric, un pārraksta īpašībucurrentSpeed.
Mantošanas ķēde: Vehicle -> Car -> ElectricCar. Katrs klases šajā ķēdē piekļūst visiem publiskajiem (vai citā kontekstā pieejamiem) locekļiem no augstāk esošajām klasēm.