¿Cuál es la diferencia entre los miembros privados y protegidos de las clases de C++?

Cual Es La Diferencia Entre Los Miembros Privados Y Protegidos De Las Clases De C



C++ es un lenguaje de programación orientado a objetos (POO) que proporciona un mecanismo para encapsular datos y funciones en una sola entidad llamada clase. Una de las características esenciales de la clase es la capacidad de especificar el nivel de acceso para sus miembros. En Programación Orientada a Objetos, especificadores de acceso se utilizan para controlar la visibilidad y accesibilidad de los campos y métodos de una clase. Protegido , público , y privado Los niveles de acceso son los tres tipos básicos de niveles de acceso en C++.

En este artículo, discutiremos la diferencia entre los dos principales especificador de acceso s, privado y protegido miembros de una clase de C++.

Especificador de acceso privado

miembros privados se declaran usando la palabra clave ' privado '. El especificador de acceso privado limita el acceso a los miembros de la clase solo a la clase misma. El código fuera de la clase no puede acceder ni modificar un miembro privado. Eso significa que solo los métodos declarados en la clase pueden acceder y operar en el miembros privados , ni siquiera las clases derivadas pueden acceder miembros privados . Un uso común de miembros privados es asegurar el correcto funcionamiento de una clase. miembros privados se utilizan para encapsular los datos de la clase y proporcionar un nivel de abstracción a los usuarios de la clase.







#incluir
usando espacio de nombres estándar ;

clase jugador {

privado :
nombre de cadena ;
    En t edad ;

público :
    vacío obtener jugador ( )
    {
        cout << 'Ingrese su nombre: ' ;
        comiendo >> nombre ;
        cout << 'Ingrese la edad: ' ;
        comiendo >> edad ;
    }
    vacío Mostrar jugador ( )
    {
        cout << 'Nombre: ' << nombre << final ;
        cout << 'Edad: ' << edad << final ;
    }
} ;

En t principal ( )
{
jugador pl ;
por favor obtener jugador ( ) ;
por favor Mostrar jugador ( ) ;

    devolver 0 ;
}

En el código anterior, usamos los métodos de miembros públicos obtenerJugador() y mostrarJugador() para acceder a los dos privado miembros nombre y edad . El obtenerJugador() La función obtiene la entrada de los usuarios y la muestra en la pantalla a través de mostrarJugador() función.



Producción







Especificador de acceso protegido

miembros protegidos de una clase pueden acceder tanto las clases derivadas como las funciones miembro de la propia clase. miembros protegidos se utilizan para proporcionar un nivel de acceso a las clases derivadas sin exponer los detalles de implementación al mundo exterior. miembros protegidos se declaran usando la palabra clave ' protegido ' y el colon (:) personaje. miembros protegidos permitir que una clase se amplíe y modifique, sin comprometer su integridad. Una clase derivada puede usar miembros protegidos para refinar o personalizar el comportamiento de una clase base.

Aquí hay un ejemplo de una clase con miembros protegidos :



#incluir
utilizando el espacio de nombres estándar;

jugador de clase {
privado:
nombre de cadena;
edad int;

protegido:
objetivos int;

público:
vacío getPlayer ( )
    {
cout <> nombre;
cout <> edad;
    }
jugador de la demostración vacío ( )
    {
cout << 'Nombre: ' << nombre << fin;
cout << 'Edad: ' << edad << fin;
    }
} ;

jugador de clase 1: jugador público {

privado:
país de cuerdas;

público:
void set_goals ( int g )
    {
metas = g;
    }
vacío getPlayer1 ( )
    {
obtener jugador ( ) ;
cout <> país;
    }
vacío showPlayer1 ( )
    {
cout << 'objetivos: ' << objetivos << fin;
Mostrar jugador ( ) ;
cout << 'País: ' << país << fin;
    }
} ;

int principal ( )
{
jugador1 pl;
pl.establecer_metas ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

    devolver 0 ;
}

El jugador clase comprende dos miembros privados , nombre y edad , uno protegido miembro, objetivos , y privado los miembros se utilizan dentro del público funciones de los miembros, obtenerJugador() y mostrarJugador() . Hay dos clases, jugador y Jugador 1 , las cuales son clases base. Uno privado miembro, país , y tres público Los métodos miembro forman el Jugador 1 clase. Fijar metas() se utiliza para cambiar el miembro protegido objetivos' valor. obtenerJugador1() llama al obtenerJugador() función miembro de la jugador clase mientras recupera adicionalmente la entrada para el país. Similar a ésto, mostrarJugador1() llama al mostrarJugador() función miembro e imprime el objetivos y país valores.

Producción

Diferencia entre miembros privados y protegidos de clases de C++

Aquí se enumeran algunas de las diferencias clave entre Privado y Protegido miembros de las clases de C++.

1: Alcance y Funcionalidad

Al considerar el uso de especificadores de acceso, es crucial pensar detenidamente en el alcance y funcionalidad Del programa. A especificador de acceso privado proporciona el más alto nivel de seguridad y evita el acceso no deseado a variables y métodos. Por otro lado, un especificador de acceso protegido ofrece una gama más amplia de accesibilidad y flexibilidad, lo cual es esencial cuando se planea heredar clases derivadas de una clase base.

2: Nivel de Acceso

La principal diferencia entre privado y miembros protegidos es el nivel de acceso que proporcionan. Protegido los miembros pueden ser accesibles tanto por las clases derivadas de la clase como por las funciones miembro, pero privado los miembros solo pueden ser obtenidos por las funciones miembro de la clase.

3: Encapsulación de clase

Otra diferencia crucial entre privado y protegido miembros es su papel en el mantenimiento de la encapsulación de la clase. Para aislar los datos y proporcionar a los usuarios de la clase cierto nivel de abstracción, privado los miembros están empleados. Protegido los miembros se emplean para gestionar la estructura de herencia y proporcionar acceso a los miembros de la clase base mediante clases derivadas.

Pensamientos finales

Privado y miembros protegidos son los dos niveles de acceso esenciales en la clase C++. El privado El especificador de acceso hace que los miembros de la clase sean inaccesibles para todos los usuarios externos y se utiliza para mantener la información privado dentro de la clase. Por el contrario, un protegido El especificador de acceso permite el acceso a los miembros de la clase solo por parte de las clases derivadas, se usa para proporcionar la funcionalidad de la clase base y permite la modificación sin cambiar el comportamiento de la clase base. El nivel de acceso de los miembros de la clase juega un papel crucial en el mantenimiento de la encapsulación de la clase y proporciona un nivel de acceso a los usuarios de la clase.