Gráfico de comparação
Base para comparação | Privado | Protegido |
---|---|---|
Herdando propriedade para a classe derivada | A classe derivada não pode acessar membros privados da classe base. | Classe derivada pode acessar membros protegidos da classe base. |
Acessibilidade | Os membros privados da classe estão inacessíveis fora do escopo da classe. | Os membros protegidos da classe são inacessíveis fora do escopo da classe, exceto a classe derivada imediatamente. |
Acessível pela própria turma | sim | sim |
Acessível da classe derivada | Não | sim |
Acessível de fora | Não | Não |
Definição de Privado
Os membros da turma declarados como privados só podem ser recuperados dentro da turma. Em outras palavras, os membros declarados na seção privada da classe só podem ser acessados pela função friend e pela função member da classe. Membros privados não podem ser obtidos diretamente para a classe derivada e são inacessíveis fora do escopo da classe.
O programa C ++ mostra o conceito de especificadores de acesso privado.
#include usando namespace std; classe A {privada: int i; public: void get () {cout <> i; }}; classe B: public A {public: void show () {i ++; cout << "\ n O número digitado após incrementcpp"> # include usando namespace std; class mammal {public: void mammalMethod (void) {cout << "Ele vem na categoria de mamíferos". <No programa acima dado, um objeto da classe filha é criado com o nome “ob” e a função de membro da classe pai pode ser acessada através do método de classe filha “marine_mammalMethod”. Embora, o método pai não possa ser acessado diretamente com o objeto “ob”.
Definição de Protegido
Os membros da classe declarados como protegidos em uma classe só podem ser acessados através da função de membro e função amiga da classe. Esses membros protegidos não podem ser acessados fora do escopo de classe, exceto a classe filha (imediatamente derivada dela). Ele serve ao propósito restrito de herança e herda as propriedades de maneira limitada.
O programa C ++ abaixo apresentado ilustra o conceito de especificadores de acesso protegido.
#include usando namespace std; class account1 {protected: int x, y; // acessível para classe derivada public: void set (int a, int b) {x = a; y = b; } void show () {cout <No exemplo acima, a classe filha herda as propriedades da classe base porque os membros de dados são declarados como públicos ou protegidos. Não seria possível se x e y tivessem sido declarados como privados na classe base.
Principais diferenças entre privado e protegido em C ++
- A palavra-chave protegida pode ser usada para criar membros de classe que são particulares para sua classe, mas podem ser herdados e usados pela classe derivada. Por outro lado, isso não é possível durante o uso privado, porque os membros privados não podem ser herdados diretamente para a classe derivada.
- Quando a classe base é herdada usando o especificador de acesso privado, ela torna todos os membros públicos e protegidos da classe base, os membros privados da classe derivada. Em contrapartida, esse não é o caso em especificadores de acesso protegido.
Conclusão
Privado e protegido são os especificadores de acesso que são usados para definir a visibilidade da classe e seus membros de forma diferente. No entanto, protegido é mais flexível que o privado.