Héritage en C++

Tout langage de programmation orienté objet ne serait pas bien d’être étudié ou utilisé s’il ne support pas l’héritage. Bien sûr, C++ prend en charge l’héritage, il prend même en charge l’héritage multiple.
 
 
Les classes peuvent hériter d’autres classes. Une classe peut hériter d’attributs et de méthodes de comportement d’une autre classe, appelée superclasse. Une classe qui hérite d’une superclasse est appelée une sous-classe, également appelée classe file. Les super-classes sont parfois aussi appelées classe mère. Il existe une relation de hiérarchie entre les classes. Cela ressemble aux relations que nous connaissons dans la vie réelle. Pensez aux véhicules, par exemple. Nous pourrions implémenter une classe Véhicules en C++, qui pourrait avoir des méthodes comme accélérer et freiner.
 


 

Exemple d’héritage simple
#include <iostream>

using namespace std; 
  
//Classe de base 
class Vehicule 
{ 
    public: 
      int id_vh;
      string marque;
      int vitesse;
}; 
   
// Sous-classe héritant de la classe de base (véhicule) 
class Voiture : public Vehicule 
{ 
    public: 
      int id_vt;
}; 
  
//fonction main 
int main()  
{ 
	Voiture v; 
	// L'objet de la classe enfant a tous les membres de données
	v.id_vh = 3; 
	v.id_vt = 58; 
	v.marque = "Land";
	v.vitesse = 300;
	cout << "ID de Voiture est : " <<  v.id_vh << endl; 
	cout << "ID de Vehicule est : " <<  v.id_vt << endl; 
	cout << "La marque : " <<  v.marque << endl; 
	cout << "La vitesse : " <<  v.vitesse << endl; 
	return 0; 
}

Cela produit le résultat suivant:
 

 
 

Exemple d’héritage multiple


Lorsqu’une classe file hérite de plusieurs classes mère, on appelle ça « héritage multiple ». Contrairement à Java, C++ prend en charge l’héritage multiple. Nous spécifions toutes les classes parentes sous forme de liste séparée par des virgules.

#include <iostream>

using namespace std; 

// Première classe de base 
class A { 
  public: 
    A() { 
      cout << "Constructeur de la classe A." << endl; 
    } 
}; 

// Deuxième classe de base
class B { 
  public: 
    B() { 
      cout << "Constructeur de la classe B." << endl; 
    } 
}; 

// Sous classe C hérite de deux classes de base A et B
class C: public A, public B { 
  
}; 
  
// main function 
int main() 
{    
    // créer un objet de sous-classe
    // invoque le constructeur des classes de base
    C obj; 
    return 0; 
}

La sortie :
 

 

Conclusion

L’héritage dans la programmation orienté objet peut permettre de respecter le principe de développement logiciel DRY(Don’t Repeat Yourself), ce qui permet de faire plus avec moins de code et de répétition. Héritage oblige également les programmeurs à réfléchir à la manière dont ils conçoivent les programmes qu’ils créent pour garantir l’efficacité et la clarté du code.
 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.