Sobes.tech
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 jako final.
  • 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.
  • Car dědí z Vehicle. Přidává vlastnost numberOfDoors a přepisuje metodu makeNoise.
  • ElectricCar dědí z Car. Přidává vlastnost batteryLevel, konstantu isElectric a přepisuje vlastnost currentSpeed.

Ř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.