Sobes.tech
Junior

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

sobes.tech AI

Atbilde no AI

Swift visas klases automātiski manto no pamatklases NSObject, pat ja tas nav skaidri norādīts. Tas atšķir Swift no dažām citām valodām, kurās var būt vairākas saknes klases.

Manto ķēde attēlo hierarhiju, kur katra klase manto īpašības un metodes no savas vecāku klases (superklases). Klase var būt tikai viena tieša superklase.

Piemērs:

// Pamatklase (nepārņem tieši no `NSObject`)
class Animal {
    var name: String

    init(name: String) {
        self.name = name
    }

    func makeSound() {
        print("Nezināms dzīvnieka skaņa")
    }
}

// Dog klase manto no Animal
class Dog: Animal {
    let breed: String

    init(name: String, breed: String) {
        self.breed = breed
        super.init(name: name) // Superklases inicializatora izsaukums
    }

    override func makeSound() { // Pārdefinēt superklases metodi
        print("Gau-gau")
    }
}

// Poodle klase manto no Dog
class Poodle: Dog {
    var isHypoallergenic: Bool

    init(name: String, breed: String, isHypoallergenic: Bool) {
        self.isHypoallergenic = isHypoallergenic
        super.init(name: name, breed: breed) // Superklases inicializatora izsaukums
    }

    // Poodle nepārdefinē makeSound, manto to no Dog
}

let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Izdrukā: Gau-gau

let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Izdrukā: Gau-gau - manto no Dog

Galvenie punkti:

  • Mantošana: B: A nozīmē, ka klase B manto no klases A.
  • Superklase: klase, no kuras manto. Piemērā Animal ir superklase Dog, un Dog ir superklase Poodle.
  • Subklase: klase, kas manto no citas klases. Piemērā Dog ir subklase Animal, un Poodle ir subklase Dog.
  • super: tiek izmantots, lai piekļūtu superklases metodēm vai inicializatoriem.
  • override: atslēgvārds, kas tiek izmantots, lai pārrakstītu superklases metodes vai īpašības subklasē.
  • final: modifikators, ko var piemērot klasei, metodei vai īpašībai, lai aizliegtu tās pārrakstīšanu vai mantošanu.

Mantošanas ķēde ļauj atkārtoti izmantot kodu, izveidot specializētas klases versijas un organizēt datu struktūru hierarhiskā veidā.