Héritage et dérivation
Si vous entendez ce nom pour la première fois, vous devez d’abord réfléchir à la signification de ces deux mots. Parlons d'abord de l'héritage. Cela ressemble à la signification de l'héritage dans la vie réelle, par exemple, une personne hérite de la propriété d'une autre personne et un fils hérite de l'héritage de son père. Le processus de propriété est appelé héritage. De même, en C++ par exemple, s'il y a deux classes, la nouvelle classe possède tous les attributs de la classe d'origine, c'est ce qu'on appelle l'héritage ! Le processus de génération d'une nouvelle classe à partir d'une classe originale est appelé dérivation ! Et nous appelons la classe d'origine la classe parent ou classe de base , et la classe dérivée de la classe de base est appelée classe dérivée ou sous-classe . Tout le monde peut reconnaître sa relation à partir de son nom.
Alors, quels sont les avantages de l’héritage et de la dérivation ? Pourquoi le C++ dispose-t-il de ce mécanisme ?
1. Refléter les idées de programmation orientée objet et mieux exprimer la relation entre les différents types.
2. En plus d'hériter de toutes les informations de la classe de base, la classe dérivée peut également ajouter ses propres informations différentes et différenciées. Tout comme le principe de l'évolution biologique, la classe dérivée se mettra à jour sur la base de toutes les informations de la classe dérivée. classe de base.
3. Les membres hérités de la classe dérivée vers la classe de base sont détenus automatiquement et de manière cachée, c'est-à-dire que nous n'avons pas besoin de les redéfinir. Cela permet d'économiser beaucoup de code et incarne l'idée de génie logiciel de réutilisation du code.
Examinons ensuite l'implémentation du code réel, comment hériter et implémenter les classes dérivées :
/************************************//Des : Démo du tutoriel C++//Auteur : Huang/ /Droit d'auteur : www.dotcpp.com//Date : 20/06/2018********************************* * *******/#include<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:intSetTime(inth,intm,ints){this->H=h;this->M=m ; this->S=s;return0;}intShowTime(){cout<<Now:<<H<<:<<M<<:<<S<<endl;return0;}};classAlarmClock:publicClock{private: intAH ;intAM;public:intSetAlarm(intAH,intAM){this->AH=AH;this->AM=AM;return0;}intShowAlarm(){cout<<AlarmTime:<<AH<<:<<AM<< endl ;return0;}};intmain(){AlarmClockA;A.SetTime(19,15,50);A.ShowTime();A.SetAlarm(5,30);A.ShowAlarm();return0;}
La capture d'écran en cours d'exécution est la suivante :
Veuillez lire et comprendre le code. Clock est la classe de base et AlarmClock est la classe dérivée. Faites attention à l'instruction définissant la classe dérivée :
classeAlarmClock : publicClock
L'héritage est représenté par deux points , où public représente l'héritage public, l'héritage privé et l'héritage protégé, que nous développerons plus tard. Dans le code, nous définissons l'objet A de la classe dérivée AlarmClock dans la fonction principale, puis nous pouvons appeler les méthodes SetTime et ShowTime de la classe de base et les utiliser de la même manière que les nôtres. Parallèlement, nous avons ajouté et défini nos propres méthodes SetAlarm et ShowAlarm dans la classe dérivée. Veuillez comprendre le code et expérimenter sur l'ordinateur.
Jusqu'à présent, nous avons introduit les concepts de base de l'héritage et de la dérivation. Après avoir compris cela, vous devez expérimenter le codage sur un ordinateur pour comprendre dans quelles circonstances deux classes ayant des points communs et liées peuvent avoir ce type de relation, et peser leurs différences. utiliser.