Sobes.tech
Junior

Rääkige Swift keele klasside pärilikketsest.

sobes.tech AI

Vastus AI-lt

Swiftis pärivad kõik klassid automaatselt põhiklassist NSObject, isegi kui see pole selgelt näidatud. See eristab Swiftit mõnest teisest keelest, kus võib olla mitu juurklassi.

Päriluse ahel kujutab hierarhiat, kus iga klass pärib omadused ja meetodid oma vanemklassilt (superklassilt). Klassil võib olla ainult üks otsene superklass.

Näide:

// Põhiklass (pärib automaatselt `NSObject`-ist)
class Animal {
    var name: String

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

    func makeSound() {
        print("Teadmata looma hääl")
    }
}

// Dog klass pärib Animalilt
class Dog: Animal {
    let breed: String

    init(name: String, breed: String) {
        self.breed = breed
        super.init(name: name) // Superklassi initsialiseerija kutsumine
    }

    override func makeSound() { // Superklassi meetodi ülekirjutamine
        print("Haug-haug")
    }
}

// Poodle klass pärib Dogilt
class Poodle: Dog {
    var isHypoallergenic: Bool

    init(name: String, breed: String, isHypoallergenic: Bool) {
        self.isHypoallergenic = isHypoallergenic
        super.init(name: name, breed: breed) // Superklassi initsialiseerija kutsumine
    }

    // Poodle ei ülekirjuta makeSound, pärib selle Dogilt
}

let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Väljund: Haug-haug

let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Väljund: Haug-haug - pärib Dogilt

Peamised punktid:

  • Pärimine: B: A tähendab, et klass B pärib klassilt A.
  • Superklass: klass, millest pärandatakse. Näites on Animal superklass Dog jaoks, ja Dog on superklass Poodle jaoks.
  • Alklass: klass, mis pärib teiselt klassilt. Näites on Dog alklass Animal-lt, ja Poodle on alklass Dog-ilt.
  • super: kasutatakse superklassi meetodite või initsialiseerijate kasutamiseks.
  • override: märksõna, mida kasutatakse superklassi meetodite või omaduste ülekirjutamiseks alklassides.
  • final: modifikaator, mida saab rakendada klassile, meetodile või omadusele, et keelata selle ülekirjutamine või pärimine.

Päriluse ahel võimaldab koodi taaskasutust, spetsialiseeritud klassiversioonide loomist ning andmestruktuuri hierarhilist korraldamist.