Junior
Parlez de la chaîne d'héritage des classes dans le langage Swift.
sobes.tech IA
Réponse de l'IA
En Swift, toutes les classes héritent implicitement de la classe de base NSObject, même si cela n'est pas indiqué explicitement. Cela distingue Swift de certains autres langages où il peut y avoir plusieurs classes racines.
La chaîne d'héritage représente une hiérarchie où chaque classe hérite des propriétés et méthodes de sa classe parente (superclasse). Une classe ne peut avoir qu'une seule superclasse directe.
Exemple:
// Classe de base (hérite implicitement de NSObject)
class Animal {
var name: String
init(name: String) {
self.name = name
}
func makeSound() {
print("Son inconnu de l'animal")
}
}
// La classe Dog hérite de Animal
class Dog: Animal {
let breed: String
init(name: String, breed: String) {
self.breed = breed
super.init(name: name) // Appel à l'initialiseur de la superclasse
}
override func makeSound() { // Redéfinition de la méthode de la superclasse
print("Ouaf-ouaf")
}
}
// La classe Poodle hérite de Dog
class Poodle: Dog {
var isHypoallergenic: Bool
init(name: String, breed: String, isHypoallergenic: Bool) {
self.isHypoallergenic = isHypoallergenic
super.init(name: name, breed: breed) // Appel à l'initialiseur de la superclasse
}
// Poodle ne redéfinit pas makeSound, hérite de Dog
}
let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Affiche: Ouaf-ouaf
let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Affiche: Ouaf-ouaf - hérite de Dog
Points clés:
- Héritage: La classe
B: Asignifie que la classeBhérite de la classeA. - Superclasse: La classe dont on hérite. Dans l'exemple,
Animalest la superclasse deDog, etDogest la superclasse dePoodle. - Sous-classe: La classe qui hérite d'une autre classe. Dans l'exemple,
Dogest sous-classe deAnimal, etPoodleest sous-classe deDog. super: Utilisé pour accéder à la mise en œuvre des méthodes ou des initialisateurs de la superclasse.override: Mot-clé utilisé pour redéfinir des méthodes ou propriétés de la superclasse dans la sous-classe.final: Modificateur qui peut être appliqué à une classe, une méthode ou une propriété pour en interdire la redéfinition ou l'héritage.
Tableau illustrant la chaîne d'héritage dans l'exemple:
| Classe | Hérite de | Redéfinit makeSound? |
|---|---|---|
NSObject |
- | Non |
Animal |
NSObject |
Non |
Dog |
Animal |
Oui |
Poodle |
Dog |
Non |
La chaîne d'héritage permet de réutiliser du code, de créer des versions spécialisées de classes et d'organiser la structure des données de manière hiérarchique.