Sobes.tech
Junior

Pastāstiet par klases manto ķēdi Swift programmēšanas valodā.

sobes.tech AI

Atbilde no AI

Swift klases atbalsta tikai vienu mantošanu. Katra klase manto no viena vecāku klases, veidojot hierarhiju. Mantošanas ķēde sākas ar pamata klasi, kas no nekā ne manto, un turpinās lejup caur bērnu klasēm.

Mantošanas īpašības:

  • Pārrakstīšana (Overriding): Bērnu klase var pārrakstīt vecāku klases metožu, īpašību un subskriptu īstenojumu. Tiek izmantots atslēgvārds override.
  • Pārrakstīšanas aizliegums (Preventing Overrides): Var novērst klases locekļa pārrakstīšanu, to atzīmējot ar final. Visa klase var tikt deklarēta kā final.
  • Piekļuve vecāku klasei: Bērnu klase var piekļūt īstenotajiem vecāku klases locekļiem, izmantojot super atslēgvārdu. Tas ir noderīgi, izsaucot vecāku metodes īstenojumu vai piekļūstot vecāku īpašībai.

Piemērs:

// Pamata klase
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Tukša īstenošana
    }
}

// Manto no Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Pārrakstīt `makeNoise` metodi
    override func makeNoise() {
        print("Bip bip")
    }
}

// Manto no Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Pievienot jaunu īpašību
    let isElectric = true

    // Pārrakstīt `currentSpeed` īpašību
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Elektriskais auto kustas")
            }
        }
    }
}

Šajā piemērā:

  • Vehicle — pamata klase.
  • Car manto no Vehicle, pievieno īpašību numberOfDoors un pārraksta metodi makeNoise.
  • ElectricCar manto no Car, pievieno īpašības batteryLevel un isElectric, un pārraksta īpašību currentSpeed.

Mantošanas ķēde: Vehicle -> Car -> ElectricCar. Katrs klases šajā ķēdē piekļūst visiem publiskajiem (vai citā kontekstā pieejamiem) locekļiem no augstāk esošajām klasēm.