Recommandé, 2024

Choix De L'Éditeur

Différence entre l'héritage unique et l'héritage multiple

L'héritage soutient fortement le concept de réutilisabilité, c'est-à-dire qu'une classe nouvellement créée réutilise les propriétés de celles déjà existantes. Le spécificateur d'accès détermine la manière dont le membre de la classe de base sera hérité par la classe dérivée. Il existe de nombreuses façons de réaliser un héritage simple, multiple, hiérarchique, multiniveau, hybride. Alors que notre principal sujet de discussion est la différence entre un héritage unique et un héritage multiple. En héritage simple, nous avons une seule classe de base qui est héritée par une seule classe dérivée. Dans l'héritage multiple, nous avons plus de deux classes de base qui sont héritées de manière combinée par une seule classe dérivée.


Tableau de comparaison

Base de comparaisonHéritage uniqueHéritage multiple
De baseLa classe dérivée hérite d'une classe de base unique.La classe dérivée hérite de deux ou plus de deux classes de base.
la mise en oeuvreClasse dérivée_classe: classe de base access_specifierClasse dérivée _class: access_specifier base_class1, access_specifier base_class2, ....
Accès
Classe dérivée accéder aux fonctionnalités de la classe de base uniqueClasse dérivée accéder aux fonctionnalités combinées des classes de base héritées
VisibilitéPublic, Privé, ProtégéPublic, Privé, Protégé
Temps d'exécutionExige une petite quantité de temps d'exécution sur la têteExiger une surcharge d'exécution supplémentaire par rapport à un héritage unique

Définition de l'héritage simple

Dans l'héritage simple, il existe une seule classe de base et une seule classe dérivée. La classe dérivée hérite de la classe de base soit de manière publique, protégée ou privée. Les membres de la classe de base sont accessibles par classe dérivée en fonction du spécificateur d'accès spécifié lors de l'héritage de la classe de base.

Prenons un exemple concret: nous avons deux classes, une "classe de compte" et une "classe de compte épargne". Ici, “classe de compte d'épargne” peut hériter de la fonctionnalité de “classe de compte”, ainsi la classe “classe de compte” deviendra la classe de base / super / parent pour la classe de compte d'épargne et “classe de compte d'épargne” sera une classe dérivée.

Ici, les attributs de la «classe de compte» sont acc_no (privé) et balance (public), et les fonctions membres sont initialize (), get_accno (), qui sont publiques. Désormais, la «classe de compte» est héritée de la «classe de compte épargne» publiquement. Ainsi, tous les membres publics de la «classe de compte» sont directement accessibles par «classe de compte épargne». Il peut accéder au membre privé de la «classe de compte» par le biais des fonctions de membre public de la «classe de compte», mais ne peut pas y accéder directement.

Mise en œuvre de l'héritage unique:

 # include using name space std; class Account {int acc_no, ; public: balance flottante; void initialize (int x, int y) {acc_no = x; balance = y; } int get_accno. () {return acc_no; }}; class Saving_acc: compte public {float intrest_rate; public: // constructeur de la classe Saving_acc class Saving_acc (int c) {interest_rate = c; } void display () {cout < 

Définition de l'héritage multiple

L'héritage multiple permet aux classes dérivées d'hériter des fonctionnalités combinées de plusieurs classes de base, c'est-à-dire que nous avons une seule classe dérivée et plusieurs classes de base. Chaque classe de base doit être héritée en mentionnant le spécificateur d'accès distinct pour chacune d'elles. Une classe dérivée peut accéder aux membres des classes de base en fonction du spécificateur d'accès par lequel la classe de base est héritée.

Rendons les choses plus faciles avec l'exemple que nous avons trois classes: Vélo, Voiture et Véhicule. Désormais, “Véhicule” peut hériter des fonctionnalités de “Vélo” ainsi que de “Voiture”. Ainsi, «Véhicule» devient une classe dérivée et «Vélo» et «Voiture» deviennent la classe de base. Maintenant, “Bike” et “Car” sont hérités publiquement de “Vehicle”. Ils peuvent accéder à tous les membres publics de “Bike” et “Car”, mais comme nous avons une entité Model_no protégée dans “Car”, elle est donc privée à Car mais peut être accessible par «véhicule».

Mise en œuvre de l'héritage multiple:

 # include using namespace std; classe Bike {int engine_cost; ; public: void set_engine_cost (int x) {engine_cost = x; }}; classe Car {protected: int Model_no; public: void set_Model_no (int p) {Model_no = p; }}; class Vehical: vélo public, voiture publique {int no_of_wheels public: vehical (int w) {no_of_wheels = w; cout << "pas de roues" < 

Différences clés entre l'héritage unique et l'héritage multiple

  1. L'héritage simple est une classe dérivée ayant une seule classe de base alors que, dans l'héritage multiple, a deux ou plus de deux classes de base, mais une classe dérivée unique.
  2. L'héritage multiple est assez déroutant dans la mesure où une classe dérivée unique hérite de deux classes de base ou plus. Si les classes de base ont un attribut ou une fonction portant le même nom, il devient difficile d'identifier une attribut ou une fonction de la classe de base.
  3. Les problèmes de frais généraux sont moins importants en cas d'héritage unique. Toutefois, en cas d'héritage multiple, la construction ou la destruction de l'objet appelle les constructeurs et le destructeur de la classe parente dans la hiérarchie des classes, ce qui augmente le temps système.
  4. L'héritage unique est plus orienté vers la spécialisation. Alors que l'héritage multiple est plus orienté vers la généralisation.
  5. Comme l'héritage simple a moins de temps système, il a moins de temps d'exécution que l'héritage multiple.

Conclusion

L'héritage facilite le travail du programmeur, car si une classe est déjà formée, ses fonctionnalités peuvent être adaptées par d'autres si nécessaire. Bien que le spécificateur d'accès limite l'accès aux membres d'une classe de base d'une certaine manière, mais il sécurise davantage les données. L'héritage simple est en quelque sorte plus simple et facile à mettre en œuvre que l'héritage multiple. L'héritage réduit la taille du code de l'objet, mais affecte également le temps d'exécution du programme.

Top