Junior
Povedzte o reťazci dedičnosti tried v jazyku Swift.
sobes.tech AI
Odpoveď od AI
V Swift všetky triedy nevyhnutne dedí od základnej triedy NSObject, aj keď to nie je výslovne uvedené. To odlišuje Swift od niektorých iných jazykov, kde môže byť niekoľko koreňových tried.
Reťazec dedenia predstavuje hierarchiu, kde každá trieda dedí vlastnosti a metódy od svojho rodičovského triedy (supertriedy). Trieda môže mať iba jednu priameho supertriedu.
Príklad:
// Základná trieda (nevyhnutne dedí od NSObject)
class Animal {
var name: String
init(name: String) {
self.name = name
}
func makeSound() {
print("Neznámy zvuk zvieraťa")
}
}
// Trieda Dog dedí od Animal
class Dog: Animal {
let breed: String
init(name: String, breed: String) {
self.breed = breed
super.init(name: name) // Volanie inicializátora supertriedy
}
override func makeSound() { // Prepisovanie metódy supertriedy
print("Hav-hav")
}
}
// Trieda Poodle dedí od Dog
class Poodle: Dog {
var isHypoallergenic: Bool
init(name: String, breed: String, isHypoallergenic: Bool) {
self.isHypoallergenic = isHypoallergenic
super.init(name: name, breed: breed) // Volanie inicializátora supertriedy
}
// Poodle neprepisuje makeSound, dedí ho od Dog
}
let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Vypíše: Hav-hav
let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Vypíše: Hav-hav - dedí od Dog
Kľúčové body:
- Dedenie: Trieda
B: Aznamená, že triedaBdedí od triedyA. - Supertrieda: Trieda, od ktorej dedí. V príklade
Animalje supertrieda preDog, aDogje supertrieda prePoodle. - Podtrieda: Trieda, ktorá dedí od inej triedy. V príklade
Dogje podtriedaAnimal, aPoodleje podtriedaDog. super: Používa sa na prístup k implementácii metód alebo inicializátorov supertriedy.override: Kľúčové slovo používané na prepísanie metód alebo vlastností supertriedy v podtriedach.final: Modifikátor, ktorý možno použiť na triedu, metódu alebo vlastnosť, aby sa zakázalo jej prepísanie alebo dedenie.
Tabuľka ilustrujúca reťazec dedenia v príklade:
| Trieda | Dedí od | Prepisuje makeSound? |
|---|---|---|
NSObject |
- | Nie |
Animal |
NSObject |
Nie |
Dog |
Animal |
Áno |
Poodle |
Dog |
Nie |
Reťazec dedenia umožňuje opätovné použitie kódu, vytváranie špecializovaných verzií tried a organizovanie štruktúry dát v hierarchickom tvare.