Sobes.tech
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ć jako final.
  • 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.
  • Car dziedziczy po Vehicle. Dodaje właściwość numberOfDoors i nadpisuje metodę makeNoise.
  • ElectricCar dziedziczy po Car. Dodaje właściwość batteryLevel, stałą isElectric i 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.