Gráfica comparativa
Bases para la comparación | Privado | Protegido |
---|---|---|
Heredando propiedad a la clase derivada. | La clase derivada no puede acceder a los miembros privados de la clase base. | La clase derivada puede acceder a miembros protegidos de la clase base. |
Accesibilidad | Los miembros privados de la clase son inaccesibles fuera del alcance de la clase. | Los miembros protegidos de la clase son inaccesibles fuera del alcance de la clase, excepto la clase derivada inmediatamente. |
Accesible desde clase propia | Sí | Sí |
Accesible desde clase derivada | No | Sí |
Accesible desde el exterior | No | No |
Definición de privado
Los miembros de la clase declarados como privados solo pueden recuperarse dentro de la clase. En otras palabras, a los miembros declarados en la sección privada de la clase solo se puede acceder mediante la función de amigo y la función de miembro de la clase. Los miembros privados no se pueden obtener directamente de la clase derivada y son inaccesibles fuera del alcance de la clase.
El programa C ++ muestra el concepto de especificadores de acceso privado.
#include usando namespace std; clase A {privado: int i; public: void get () {cout <> i; }}; clase B: público A {público: void show () {i ++; cout << "\ n Su número ingresado después de incrementcpp"> # include using namespace std; clase mamífero {público: vacío mamíferoMétodo (vacío) {cout << "Viene dentro de la categoría de mamífero". <En el programa anterior, se crea un objeto de la clase secundaria con el nombre "ob" y se puede acceder a la función miembro de la clase primaria a través del método de clase secundaria "marine_mammalMethod". Aunque, no se puede acceder directamente al método principal con el objeto "ob".
Definición de Protegido
Los miembros de la clase declarados como protegidos en una clase solo pueden ser accesibles a través de la función de miembro y la función de amigo de la clase. No se puede acceder a estos miembros protegidos fuera del alcance de la clase, excepto a la clase secundaria (que se deriva inmediatamente de ella). Sirve el propósito restringido en la herencia y hereda las propiedades de una manera limitada.
El programa de C ++ dado a continuación ilustra el concepto de especificadores de acceso protegido.
#include usando namespace std; class account1 {protected: int x, y; // accesible para la clase derivada public: void set (int a, int b) {x = a; y = b; } void show () {cout <En el ejemplo anterior, la clase secundaria hereda las propiedades de la clase base porque los miembros de los datos se declaran públicos o protegidos. No sería posible si x e y hubieran sido declarados como privados en la clase base.
Diferencias clave entre lo privado y lo protegido en C ++
- La palabra clave protegida se puede usar para crear miembros de clase que son privados para su clase, pero la clase derivada puede heredarlos y usarlos. Por el contrario, esto no es posible mientras se usa privado, porque los miembros privados no pueden heredarse directamente en la clase derivada.
- Cuando la clase base se hereda utilizando el especificador de acceso privado, hace que todos los miembros públicos y protegidos de la clase base, los miembros privados de la clase derivada. En contra, este no es el caso en los especificadores de acceso protegido.
Conclusión
Privado y protegido son los especificadores de acceso que se utilizan para establecer la visibilidad de la clase y sus miembros de manera diferente. Sin embargo, lo protegido es más flexible que lo privado.