Sobes.tech
Junior

Vorbiți despre lanțul de moștenire a claselor în limbajul de programare Swift.

sobes.tech AI

Răspuns de la AI

Clasele în Swift suportă moștenirea simplă. Fiecare clasă moștenește de la o clasă părinte, formând o ierarhie. Lanțul de moștenire începe cu o clasă de bază, care nu moștenește de la nimic, și se extinde în jos prin clasele copil.

Proprietăți ale moștenirii:

  • Suprascriere (Overriding): Clasa copil poate suprascrie implementarea metodelor, proprietăților și subscripturilor clasei părinte. Se folosește cuvântul cheie override.
  • Prevenirea suprascrierii (Preventing Overrides): Se poate preveni suprascrierea unui membru al clasei marcându-l cu cuvântul cheie final. Întreaga clasă poate fi declarată ca final.
  • Acces la clasa părinte: Clasa copil poate accesa membrii implementați ai clasei părinte folosind cuvântul cheie super. Acest lucru este util pentru a apela implementarea unei metode părinte sau pentru a accesa o proprietate părinte.

Exemplu:

// Clasă de bază
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Implementare goală
    }
}

// Clasă copil care moștenește de la Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Suprascrierea metodei makeNoise
    override func makeNoise() {
        print("Bip bip")
    }
}

// Clasă copil care moștenește de la Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Adăugarea unei noi proprietăți
    let isElectric = true

    // Suprascrierea proprietății din clasa de bază
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Mașina electrică se mișcă")
            }
        }
    }
}

În acest exemplu:

  • Vehicle — clasă de bază.
  • Car moștenește de la Vehicle. Adaugă proprietatea numberOfDoors și suprascrie metoda makeNoise.
  • ElectricCar moștenește de la Car. Adaugă proprietatea batteryLevel, constanta isElectric și suprascrie proprietatea currentSpeed.

Lanțul de moștenire: Vehicle -> Car -> ElectricCar. Fiecare clasă din acest lanț are acces la toți membrii publici (sau accesibili în alt context) ai claselor superioare din ierarhie.