Sobes.tech
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. Всеки клас в тази верига има достъп до всички публични (или достъпни в друг контекст) членове на по-горните класове в йерархията.