abstract class
Une classe de base que vous ne pouvez pas créer directement, avec des méthodes à compléter par ses descendants.
Exemple
#abstract class Exercise {
constructor(public title: string) {}
abstract check(answer: string): boolean
run(answer: string): string {
return `${this.title}: ${this.check(answer) ? 'correct' : 'réessayez'}`
}
}
class QuestionExercise extends Exercise {
constructor(title: string, private correct: string) {
super(title)
}
check(answer: string): boolean {
return answer.trim().toLowerCase() === this.correct
}
}
const task = new QuestionExercise('Balise de paragraphe', 'p')
console.log(task.run(' P '))
console.log(task.run('div'))Balise de paragraphe: correct Balise de paragraphe: réessayez
Définition et utilisation
#Une classe abstraite est un gabarit pour d’autres classes. Vous ne pouvez pas créer son objet avec new, vous pouvez seulement l’étendre. Elle peut contenir des méthodes ordinaires avec du code, ainsi que des méthodes abstraites qui n’ont qu’une signature.
Chaque classe dérivée doit implémenter toutes les méthodes abstraites. Le compilateur veille à cela, si bien que la logique commune reste dans la classe de base, et les détails dans les descendants.
Contrairement à une interface, une classe abstraite peut contenir du code fonctionnel et des champs. Si vous avez seulement besoin d’un contrat sans implémentation, une interface suffit.
Syntaxe
#abstract class Name {
abstract method(): type
ordinaryMethod() { … }
}Plus d’exemples
#const generic = new Exercise('Quelque chose')
// Erreur : Cannot create an instance of an abstract class.Bonnes pratiques
#- Une classe abstraite est utile quand les descendants partagent beaucoup de code commun. Pour un simple contrat, choisissez une interface.
- Ne construisez pas de longues chaînes d’héritage. La composition de fonctions ou d’objets est souvent plus simple.
Entrées associées
#- implementsUne déclaration indiquant qu’une classe respecte le contrat décrit par une interface.
- public, private, protectedDes modificateurs d’accès qui déterminent d’où les champs et méthodes d’une classe peuvent être utilisés.
- interfaceUne description nommée de la forme d’un objet, que vous pouvez étendre et fusionner.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.