Polymorphisme C++


Polymorphisme

Le polymorphisme signifie "plusieurs formes", et il se produit lorsque nous avons de nombreuses classes liées les unes aux autres par héritage.

Comme nous l'avons précisé dans le chapitre précédent; L'héritage nous permet d'hériter des attributs et des méthodes d'une autre classe. Le polymorphisme utilise ces méthodes pour effectuer différentes tâches. Cela nous permet d'effectuer une même action de différentes manières.

Par exemple, pensez à une classe de base appelée Animalqui a une méthode appelée animalSound(). Les classes dérivées d'animaux pourraient être des cochons, des chats, des chiens, des oiseaux - et ils ont aussi leur propre implémentation d'un son d'animal (le cochon ronfle, et le chat miaule, etc.) :

Exemple

// Base class
class Animal {
  public:
    void animalSound() {
    cout << "The animal makes a sound \n" ;
  }
};

// Derived class
class Pig : public Animal {
  public:
    void animalSound() {
    cout << "The pig says: wee wee \n" ;
  }
};

// Derived class
class Dog : public Animal {
  public:
    void animalSound() {
    cout << "The dog says: bow wow \n" ;
  }
};

Rappelez-vous du chapitre Héritage que nous utilisons le :symbole pour hériter d'une classe.

Nous pouvons maintenant créer des objets et remplacer la Pigméthode : DoganimalSound()

Exemple

// Base class
class Animal {
  public:
    void animalSound() {
    cout << "The animal makes a sound \n" ;
  }
};

// Derived class
class Pig : public Animal {
  public:
    void animalSound() {
    cout << "The pig says: wee wee \n" ;
   }
};

// Derived class
class Dog : public Animal {
  public:
    void animalSound() {
    cout << "The dog says: bow wow \n" ;
  }
};

int main() {
  Animal myAnimal;
  Pig myPig;
  Dog myDog;

  myAnimal.animalSound();
  myPig.animalSound();
  myDog.animalSound();
  return 0;
}

Pourquoi et quand utiliser "Héritage" et "Polymorphisme" ?

- C'est utile pour la réutilisabilité du code : réutilisez les attributs et les méthodes d'une classe existante lorsque vous créez une nouvelle classe.