Junior
Rääkige Swift programmeerimiskeeles klasside pärilusahelast.
sobes.tech AI
Vastus AI-lt
Swift klassid toetavad ainult pärandamist. Iga klass pärib ühelt vanemklassilt, moodustades hierarhia. Pärandamise ahel algab põhiklassist, mis ei pärigi millestki, ja jätkub allapoole tütarklasside kaudu.
Pärandamise omadused:
- Overriding (Üle kirjutamine): Tütarklass saab üle kirjutada vanemklassi meetodite, omaduste ja subskriptide teostuse. Kasutatakse võtmesõna
override. - Overridingu vältimine (Preventing Overrides): Võib takistada liikme üle kirjutamist, märkides selle
final. Kogu klassi võib määratleda kuifinal. - Juurdepääs vanemklassile: Tütarklass saab juurdepääsu vanemklassi rakendatud liikmetele
supervõtmesõna abil. See on kasulik vanemmeetodi väljakutse või vanemomaduse juurde pääsemiseks.
Näide:
// Põhiklass
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Tühi teostus
}
}
// Pärib Vehicle klassist
class Car: Vehicle {
var numberOfDoors = 4
// `makeNoise` meetodi üle kirjutamine
override func makeNoise() {
print("Beep beep")
}
}
// Pärib Car klassist
class ElectricCar: Car {
var batteryLevel = 100.0
// Uue omaduse lisamine
let isElectric = true
// `currentSpeed` omaduse üle kirjutamine
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Elektriline auto liigub")
}
}
}
}
Selles näites:
Vehicle— põhiklass.CarpäribVehicle-st, lisab omadusenumberOfDoorsja üle kirjutab meetodimakeNoise.ElectricCarpäribCar-st, lisab omadusedbatteryLeveljaisElectric, ning üle kirjutab omadusecurrentSpeed.
Pärandamise ahel: Vehicle -> Car -> ElectricCar. Iga klass pääseb ligi kõigile avalikele (või muus kontekstis kättesaadavatele) liikmetele kõrgemal tasandil hierarhias olevatest klassidest.