Tableau de comparaison
Base de comparaison | Privé | Protégé |
---|---|---|
Héritage de la propriété à la classe dérivée | La classe dérivée ne peut pas accéder aux membres privés de la classe de base. | La classe dérivée peut accéder aux membres protégés par la classe de base. |
Accessibilité | Les membres privés de la classe sont inaccessibles hors de la portée de la classe. | Les membres protégés de la classe sont inaccessibles hors de la portée de la classe, à l'exception de la classe dérivée immédiatement. |
Accessible depuis sa propre classe | Oui | Oui |
Accessible à partir de la classe dérivée | Non | Oui |
Accessible de l'extérieur | Non | Non |
Définition de privé
Les membres de la classe déclarés comme privés ne peuvent être récupérés qu'au sein de la classe. En d'autres termes, seuls les fonctions ami et membre de la classe peuvent accéder aux membres déclarés dans la section private de la classe. Les membres privés ne peuvent pas être obtenus directement auprès de la classe dérivée et sont inaccessibles en dehors de la portée de la classe.
Le programme C ++ montre le concept de spécificateurs d’accès privé.
#include using namespace std; classe A {privé: int i; public: void get () {cout <> i; }}; classe B: public A {public: void show () {i ++; cout << "\ n Le numéro que vous avez entré après incrementcpp"> # include using namespace std; classe mammal {public: void mammalMethod (void) {cout << "Il appartient à la catégorie des mammifères." <Dans le programme ci-dessus, un objet de la classe enfant est créé avec le nom «ob» et la fonction membre de la classe parent est accessible via la méthode de classe enfant appelante «marine_mammalMethod». Bien que, la méthode parente ne soit pas accessible directement avec l’objet «ob».
Définition de protégé
Les membres de classe déclarés comme protégés dans une classe ne peuvent être accessibles que via les fonctions membre et ami de la classe. Il est impossible d'accéder à ces membres protégés en dehors de la portée de la classe, à l'exception de la classe enfant (qui en dérive immédiatement). Il remplit une fonction limitée en matière d'héritage et hérite des propriétés de manière limitée.
Le programme C ++ donné ci-dessous illustre le concept de spécificateurs d'accès protégés.
#include using namespace std; class account1 {protected: int x, y; // accessible à la classe dérivée public: void set (int a, int b) {x = a; y = b; } void show () {cout <Dans l'exemple ci-dessus, la classe enfant hérite des propriétés de la classe de base car les membres de données sont déclarés publics ou protégés. Cela ne serait pas possible si x et y avaient été déclarés privés dans la classe de base.
Différences clés entre privé et protégé en C ++
- Le mot-clé protected peut être utilisé pour créer des membres de classe qui sont privés pour leur classe, mais peuvent être hérités et utilisés par la classe dérivée. Inversement, cela n'est pas possible avec l'utilisation de private, car les membres private ne peuvent pas être hérités directement de la classe dérivée.
- Lorsque la classe de base est héritée à l'aide du spécificateur d'accès privé, tous les membres publics et protégés de la classe de base sont définis, c'est-à-dire les membres privés de la classe dérivée. Par contre, ce n'est pas le cas dans les spécificateurs d'accès protégés.
Conclusion
Privé et protégé sont les spécificateurs d'accès utilisés pour définir différemment la visibilité de la classe et de ses membres. Cependant, protégé est plus flexible que privé.