logo oujood
🔍

🏛️ Classes Abstraites en TypeScript

Une classe abstraite sert de modèle pour d'autres classes. Elle peut contenir à la fois :

OUJOOD.COM

📌 Déclaration d’une classe abstraite

On utilise le mot-clé abstract pour :

  • déclarer la classe elle-même
  • et/ou certaines méthodes qui seront obligatoirement redéfinies

🔧 Exemple concret

📋 Copier le code

abstract class Animal {
  constructor(public nom: string) {}

  manger(): void {
    console.log(\`\${this.nom} mange.\`);
  }

  abstract crier(): void; // méthode à définir obligatoirement
}

class Chien extends Animal {
  crier(): void {
    console.log(\`\${this.nom} aboie : Wouf!\`);
  }
}

const rex = new Chien("Rex");
rex.manger(); // hérité
rex.crier();  // redéfini
  • Animal est une classe abstraite
  • Elle fournit une méthode manger() concrète
  • Elle impose la méthode crier(), sans l’implémenter
  • Chien est obligé de fournir sa propre version de crier()

🚫 Une classe abstraite ne peut pas être instanciée directement

📋 Copier le code

// ❌ Ceci provoque une erreur :
const a = new Animal("Mystère");

On ne peut créer d’objet que depuis une sous-classe concrète (ex : Chien), jamais depuis la classe abstraite directement.

🎓 Pourquoi utiliser une classe abstraite ?

  • Pour forcer les sous-classes à implémenter certaines méthodes
  • Pour partager une logique commune entre plusieurs sous-classes
  • Pour définir une structure de base solide dans les projets

🧬 Comparaison rapide : Interface vs Classe abstraite

Caractéristique Interface Classe Abstraite
Contient de la logique (implémentation)
Peut contenir des méthodes abstraites
Peut être héritée avec extends ❌ (utilise implements)
Peut être instanciée

📌 Résumé

  • Les classes abstraites sont des modèles partagés
  • Elles peuvent avoir des méthodes concrètes et abstraites
  • On ne peut pas les instancier directement
  • Idéal pour structurer un projet avec des classes de base réutilisables

🧭 Prochaine étape

À partir du prochain chapitre, nous allons commencer à appliquer tout ce que nous avons vu… dans notre projet panier e-commerce 🛒 ! Nous allons créer les premières **classes métiers** de l’application.

Souhaites-tu passer au Module 3 : Application pratique – Chapitre 1 : Création de la classe Produit ?