Conteúdo do Curso
C++ Poo
C++ Poo
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 public | Base Class protected | Base 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
protected.cpp
private.cpp
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
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; }
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
.
Obrigado pelo seu feedback!