Junior
Povězte o řetězci dědičnosti tříd v programovacím jazyce Swift.
sobes.tech AI
Odpověď od AI
Třídy v Swift podporují jednoduchou dědičnost. Každá třída dědí od rodičovské třídy, čímž vzniká hierarchie. Řetězec dědičnosti začíná základní třídou, která nedědí od ničeho, a rozšiřuje se dolů přes podtřídy.
Vlastnosti dědičnosti:
- Přepsání (Overriding): Podtřída může přepsat implementaci metod, vlastností a subskriptů rodičovské třídy. Používá se klíčové slovo
override. - Zabránění přepsání (Preventing Overrides): Je možné zabránit přepsání člena třídy označením klíčovým slovem
final. Celou třídu lze deklarovat jakofinal. - Přístup k rodičovské třídě: Podtřída může získat přístup k implementovaným členům rodičovské třídy pomocí klíčového slova
super. To je užitečné pro volání implementace rodičovské metody nebo přístup k rodičovské vlastnosti.
Příklad:
// Základní třída
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Prázdná implementace
}
}
// Podtřída dědící z Vehicle
class Car: Vehicle {
var numberOfDoors = 4
// Přepsání metody makeNoise
override func makeNoise() {
print("Píp píp")
}
}
// Podtřída dědící z Car
class ElectricCar: Car {
var batteryLevel = 100.0
// Přidání nové vlastnosti
let isElectric = true
// Přepsání vlastnosti z rodičovské třídy
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Elektrické auto se pohybuje")
}
}
}
}
V tomto příkladu:
Vehicle— základní třída.Cardědí zVehicle. Přidává vlastnostnumberOfDoorsa přepisuje metodumakeNoise.ElectricCardědí zCar. Přidává vlastnostbatteryLevel, konstantuisElectrica přepisuje vlastnostcurrentSpeed.
Řetězec dědičnosti: Vehicle -> Car -> ElectricCar. Každá třída v tomto řetězci má přístup ke všem veřejným (nebo v jiném kontextu dostupným) členům vyšších tříd v hierarchii.