Junior
Opowiedz o łańcuchu dziedziczenia klas w języku programowania Swift.
sobes.tech AI
Odpowiedź od AI
Klasy w Swift obsługują pojedyncze dziedziczenie. Każda klasa dziedziczy po jednej klasie nadrzędnej, tworząc hierarchię. Łańcuch dziedziczenia zaczyna się od klasy bazowej, która nie dziedziczy od niczego, i rozciąga się w dół przez klasy potomne.
Właściwości dziedziczenia:
- Przesłanianie (Overriding): Klasa potomna może przesłonić implementację metod, właściwości i subskryptów klasy nadrzędnej. Używa się słowa kluczowego
override. - Zapobieganie przesłanianiu (Preventing Overrides): Można zapobiec przesłanianiu członka klasy, oznaczając go słowem kluczowym
final. Całą klasę można zadeklarować jakofinal. - Dostęp do klasy nadrzędnej: Klasa potomna może uzyskać dostęp do zaimplementowanych członków klasy nadrzędnej za pomocą słowa kluczowego
super. Jest to przydatne do wywołania implementacji metody klasy nadrzędnej lub dostępu do właściwości nadrzędnej.
Przykład:
// Klasa bazowa
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Pusta implementacja
}
}
// Klasa potomna dziedzicząca po Vehicle
class Car: Vehicle {
var numberOfDoors = 4
// Nadpisanie metody makeNoise
override func makeNoise() {
print("Beep beep")
}
}
// Klasa potomna dziedzicząca po Car
class ElectricCar: Car {
var batteryLevel = 100.0
// Dodanie nowej właściwości
let isElectric = true
// Nadpisanie właściwości z klasy bazowej
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Elektryczny samochód się porusza")
}
}
}
}
W tym przykładzie:
Vehicle— klasa bazowa.Cardziedziczy poVehicle. Dodaje właściwośćnumberOfDoorsi nadpisuje metodęmakeNoise.ElectricCardziedziczy poCar. Dodaje właściwośćbatteryLevel, stałąisElectrici nadpisuje właściwośćcurrentSpeed.
Łańcuch dziedziczenia: Vehicle -> Car -> ElectricCar. Każda klasa w tym łańcuchu ma dostęp do wszystkich publicznych (lub dostępnych w innym kontekście) członków klas wyższych w hierarchii.