Sobes.tech
Junior

Pasakykite apie klasės paveldėjimo grandinę Swift programavimo kalboje.

sobes.tech AI

Atsakymas iš AI

Swift klasės palaiko vienintelį paveldėjimą. Kiekviena klasė paveldi iš vienos tėvų klasės, sudarydama hierarchiją. Paveldėjimo grandinė prasideda nuo bazinės klasės, kuri nieko nepaveldi, ir tęsiasi žemyn per vaikų klases.

Paveldėjimo savybės:

  • Perrašymas (Overriding): Vaikų klasė gali perrašyti tėvų klasės metodų, savybių ir subskryptų įgyvendinimą. Naudojamas raktinis žodis override.
  • Perrašymo draudimas (Preventing Overrides): Galima užkirsti kelią nario perrašymui pažymint jį raktiniu žodžiu final. Visa klasė gali būti paskelbta kaip final.
  • Prieiga prie tėvų klasės: Vaikų klasė gali pasiekti įgyvendintus tėvų klasės narius naudodama super raktinį žodį. Tai naudinga kviečiant tėvų metodo įgyvendinimą arba prieigai prie tėvų savybės.

Pavyzdys:

// Bazinė klasė
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Tuščia įgyvendinimas
    }
}

// Paveldi iš Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Perrašyti `makeNoise` metodą
    override func makeNoise() {
        print("Beep beep")
    }
}

// Paveldi iš Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Pridėti naują savybę
    let isElectric = true

    // Perrašyti `currentSpeed` savybę
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Elektrinė mašina juda")
            }
        }
    }
}

Šiame pavyzdyje:

  • Vehicle — bazinė klasė.
  • Car paveldi iš Vehicle, prideda savybę numberOfDoors ir perrašo metodą makeNoise.
  • ElectricCar paveldi iš Car, prideda savybes batteryLevel ir isElectric, ir perrašo savybę currentSpeed.

Paveldėjimo grandinė: Vehicle -> Car -> ElectricCar. Kiekviena klasė turi prieigą prie visų atvirų (ar kitame kontekste prieinamų) narių aukštesnės hierarchijos klasėse.