Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Modificadores de Acesso na Herança | Visão Geral de Herança
C++ Poo
course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
Modificadores de Acesso na Herança

Modificadores de acesso desempenham um papel fundamental na programação orientada a objetos, especialmente na herança. Eles determinam como os membros (atributos e métodos) de uma classe base podem ser acessados pelas classes derivadas. Compreender esses modificadores é essencial para projetar classes eficazes e manter a encapsulação e integridade dos dados.

Tipos de acesso na herança

Uma classe pode ser derivada de outra classe. A classe derivada herda membros da classe base, mas a acessibilidade desses membros herdados depende tanto do modificador de acesso utilizado na classe base quanto do tipo de herança.

Base Class publicBase Class protectedBase Class private
public

Public in Derived Class

Protected in Derived Class

Not Accessible

protected

Protected in Derived Class

Protected in Derived Class

Not Accessible

private

Private in Derived Class

Private in Derived Class

Not Accessible

public.cpp

public.cpp

protected.cpp

protected.cpp

private.cpp

private.cpp

copy
12345
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };

Conclusão sobre Controle de Acesso e Herança

Em herança orientada a objetos, membros private de uma classe base são inacessíveis para classes derivadas, protegendo-os contra modificação ou recuperação. Membros Protected só podem ser acessados dentro da subclasse, enquanto membros public podem ser acessados externamente. É possível experimentar isso utilizando o trecho de código abaixo.

main.cpp

main.cpp

copy
1234567891011121314151617181920
class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }
Note
Nota

Membros Protected, acessíveis dentro de classes derivadas e ainda mais derivadas, funcionam como uma ponte entre elementos private e public.

Construtores e destrutores são invocados automaticamente para objetos da classe derivada, garantindo a correta inicialização e liberação de recursos. Para acessar diretamente esses elementos da classe base, construtores e destrutores devem ser declarados como public.

question mark

O que determina como os membros de uma classe base podem ser acessados por uma classe derivada?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 2

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
Modificadores de Acesso na Herança

Modificadores de acesso desempenham um papel fundamental na programação orientada a objetos, especialmente na herança. Eles determinam como os membros (atributos e métodos) de uma classe base podem ser acessados pelas classes derivadas. Compreender esses modificadores é essencial para projetar classes eficazes e manter a encapsulação e integridade dos dados.

Tipos de acesso na herança

Uma classe pode ser derivada de outra classe. A classe derivada herda membros da classe base, mas a acessibilidade desses membros herdados depende tanto do modificador de acesso utilizado na classe base quanto do tipo de herança.

Base Class publicBase Class protectedBase Class private
public

Public in Derived Class

Protected in Derived Class

Not Accessible

protected

Protected in Derived Class

Protected in Derived Class

Not Accessible

private

Private in Derived Class

Private in Derived Class

Not Accessible

public.cpp

public.cpp

protected.cpp

protected.cpp

private.cpp

private.cpp

copy
12345
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };

Conclusão sobre Controle de Acesso e Herança

Em herança orientada a objetos, membros private de uma classe base são inacessíveis para classes derivadas, protegendo-os contra modificação ou recuperação. Membros Protected só podem ser acessados dentro da subclasse, enquanto membros public podem ser acessados externamente. É possível experimentar isso utilizando o trecho de código abaixo.

main.cpp

main.cpp

copy
1234567891011121314151617181920
class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }
Note
Nota

Membros Protected, acessíveis dentro de classes derivadas e ainda mais derivadas, funcionam como uma ponte entre elementos private e public.

Construtores e destrutores são invocados automaticamente para objetos da classe derivada, garantindo a correta inicialização e liberação de recursos. Para acessar diretamente esses elementos da classe base, construtores e destrutores devem ser declarados como public.

question mark

O que determina como os membros de uma classe base podem ser acessados por uma classe derivada?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 2
some-alt