User Tools

Site Tools


in204:cpp:syntax:class:deriving

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
in204:cpp:syntax:class:deriving [2021/03/28 10:32]
bmonsuez
in204:cpp:syntax:class:deriving [2022/11/18 10:51] (current)
Line 120: Line 120:
 En effet, lorsque nous appellons la méthode ''​reset()'',​ nous mettons d'​abord le champs ''​mReversePosition''​ à ''​mNumberOfCharacters''​ et puis ensuite nous appellons la méthode ''​reset()''​ de la classe de base ''​enumerate_characters()::​reset()''​. Nous avons spécialisé le comportement de la fonction ''​reset()''​ par rapport à la fonction ''​reset()''​ de la classe de base. C'est pour cela que les classes dérivées sont aussi appellées classes spécialisées. En effet, lorsque nous appellons la méthode ''​reset()'',​ nous mettons d'​abord le champs ''​mReversePosition''​ à ''​mNumberOfCharacters''​ et puis ensuite nous appellons la méthode ''​reset()''​ de la classe de base ''​enumerate_characters()::​reset()''​. Nous avons spécialisé le comportement de la fonction ''​reset()''​ par rapport à la fonction ''​reset()''​ de la classe de base. C'est pour cela que les classes dérivées sont aussi appellées classes spécialisées.
  
-===== Définition d'une classe dérivée ​====+[[cpp:​syntax:​class:​deriving:​creating|Définir ​une classe dérivée]]
  
-La classe dérivée ​est une **extension** d'une classe de base. C'est une classe à laquelle on a ajouté des __champs__ et des __fonctions membres__ supplémentaires.+[[cpp:​syntax:​class:​deriving:​methods|Définir champs et méthodes dans une classe dérivée]]
  
-La classe dérivée **hérite** de l'​ensemble des __fonctions membres__ et des __champs__ définis par la ou les classes de bases. C'est pour cela que l'on parle d'​héritage quand on parle de classes dérivées d'une autre classe.+[[cpp:​syntax:​class:​deriving:​constructor|Définir ​les constructeurs dans une classe ​dérivée]]
  
-===== Déclaration d'une classe dérivée ==== +[[cpp:​syntax:class:deriving:​destructor|Définir ​les destructeurs ​dans une classe dérivée]]
- +
-La syntaxe pour déclarer une classe comme héritant d'une classe de base est la suivante ​: +
-<code cpp> +
- +
-class DerivingClasspublic BaseClass +
-+
-}; +
- +
-</​code>​ +
- +
-==== Accessibilité des méthodes et des champs d'une classe de base ==== +
- +
-Cette définition indique que la classe ''​DerivingClass''​ hérite de la classe ''​BaseClass''​ et donc que l'​ensemble des méthodes et des champs définis par la classe ''​BaseClass''​ sont présents dans la classe ''​DerivingClass''​. Cependant, il faut faire attention, présent ne veut pas dire qu'ils sont accessibles dans la classe de base. Ainsi, nous avons les règles d'​accessibilité suivantes pour les méthodes et les champs définis dans la classe de base. +
- +
-^ Déclaration dans la classe de base ^ Accesibilité dans la classe dérivée ^  +
-|les champs ou méthodes déclarés ''​public''​ dans la classe de base | les champs et méthodes sont accessibles dans la classe dérivée | +
-|les champs ou méthodes déclarés ''​protected''​ dans la classe de base | les champs et méthodes sont accessibles dans la classe dérivée | +
-|les champs ou méthodes déclarés ''​private''​ dans la classe de base | les champs et méthodes ne sont pas accessibles dans la classe dérivée | +
- +
-Cependant, il faut aussi s'​intéresser à l'​accesibilité des méthodes en dehors de la classe dérivée. C'est ici qu'​intervient les attributs d'​accessibilité que l'on place devant le type de la classe dont hérite qui peuvent être ''​public'',​ ''​protected''​ ou ''​private''​. +
- +
-^ Attribut d'​héritage ^ Accessibilité en dehors de la classe ^ Accessibilité ​dans une classe dérivant de ''​DerivingClass''​ ^ +
-|''​DerivingClass:​ public BaseClass''​| Les méthodes et champs ''​public''​ de ''​BaseClass''​ sont accessibles. | Les méthodes et champs ''​public''​ ou ''​protected''​ de ''​BaseClass''​ sont accessibles à la classe dérivée. | +
-|''​DerivingClass:​ private BaseClass''​| Aucune méthode ou champs de ''​BaseClass''​ ne sont accessibles. | Aucune méthode ou champs de ''​BaseClass''​ ne sont accessibles à la classe dérivée. | +
-|''​DerivingClass:​ protected BaseClass''​| Aucune méthode ou champs de ''​BaseClass''​ sont accessibles. | Les méthodes et champs ''​public''​ ou ''​protected''​ de ''​BaseClass''​ sont accessibles à la classe dérivée. |+
  
  
in204/cpp/syntax/class/deriving.1616927578.txt.gz · Last modified: 2021/03/28 10:32 by bmonsuez