Junior
Разкажете за веригата на наследяване на класове в езика за програмиране Swift.
sobes.tech AI
Отговор от AI
Класовете в Swift поддържат единично наследяване. Всеки клас наследява от родителски клас, формирайки йерархия. Верижката на наследяване започва с базов клас, който не наследява от нищо, и се разпростира надолу през дъщерните класове.
Свойства на наследяването:
- Презаписване (Overriding): Дъщерният клас може да презапише реализацията на методи, свойства и субскрипти на родителския клас. Използва се ключовата дума
override. - Предотвратяване на презаписване (Preventing Overrides): Може да се предотврати презаписването на член на класа, като се маркира с ключовата дума
final. Целият клас може да бъде обявен катоfinal. - Достъп до родителския клас: Дъщерният клас може да получи достъп до реализираните членове на родителския клас чрез ключовата дума
super. Това е полезно за извикване на реализацията на родителски метод или достъп до родителска собственост.
Пример:
// Базов клас
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Празна реализация
}
}
// Дъщерен клас, наследяващ от Vehicle
class Car: Vehicle {
var numberOfDoors = 4
// Презаписване на метода makeNoise
override func makeNoise() {
print("Бип бип")
}
}
// Дъщерен клас, наследяващ от Car
class ElectricCar: Car {
var batteryLevel = 100.0
// Добавяне на ново свойство
let isElectric = true
// Презаписване на свойство от базовия клас
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Електрическата кола се движи")
}
}
}
}
В този пример:
Vehicle— базов клас.Carнаследява отVehicle. Той добавя свойствотоnumberOfDoorsи презаписва методаmakeNoise.ElectricCarнаследява отCar. Той добавя свойствотоbatteryLevel, константатаisElectricи презаписва свойствотоcurrentSpeed.
Веригата на наследяване: Vehicle -> Car -> ElectricCar. Всеки клас в тази верига има достъп до всички публични (или достъпни в друг контекст) членове на по-горните класове в йерархията.