Sobes.tech
Junior

Rääkige Swift programmeerimiskeeles klasside pärilusahelast.

sobes.tech AI

Vastus AI-lt

Swift klassid toetavad ainult pärandamist. Iga klass pärib ühelt vanemklassilt, moodustades hierarhia. Pärandamise ahel algab põhiklassist, mis ei pärigi millestki, ja jätkub allapoole tütarklasside kaudu.

Pärandamise omadused:

  • Overriding (Üle kirjutamine): Tütarklass saab üle kirjutada vanemklassi meetodite, omaduste ja subskriptide teostuse. Kasutatakse võtmesõna override.
  • Overridingu vältimine (Preventing Overrides): Võib takistada liikme üle kirjutamist, märkides selle final. Kogu klassi võib määratleda kui final.
  • Juurdepääs vanemklassile: Tütarklass saab juurdepääsu vanemklassi rakendatud liikmetele super võtmesõna abil. See on kasulik vanemmeetodi väljakutse või vanemomaduse juurde pääsemiseks.

Näide:

// Põhiklass
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Tühi teostus
    }
}

// Pärib Vehicle klassist
class Car: Vehicle {
    var numberOfDoors = 4

    // `makeNoise` meetodi üle kirjutamine
    override func makeNoise() {
        print("Beep beep")
    }
}

// Pärib Car klassist
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Uue omaduse lisamine
    let isElectric = true

    // `currentSpeed` omaduse üle kirjutamine
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Elektriline auto liigub")
            }
        }
    }
}

Selles näites:

  • Vehicle — põhiklass.
  • Car pärib Vehicle-st, lisab omaduse numberOfDoors ja üle kirjutab meetodi makeNoise.
  • ElectricCar pärib Car-st, lisab omadused batteryLevel ja isElectric, ning üle kirjutab omaduse currentSpeed.

Pärandamise ahel: Vehicle -> Car -> ElectricCar. Iga klass pääseb ligi kõigile avalikele (või muus kontekstis kättesaadavatele) liikmetele kõrgemal tasandil hierarhias olevatest klassidest.