C++
Home

Herança

C++ Oferece 3 especies de herança, - public, protected e private.

Teremos classes base que fornece atributos e comportamentos para outras classes
e
Teremos classes derivadas que herda atributos e comportamentos.

Os membros public de uma classe podem ser acessados por todas as funções do programa.
Os membros private de uma classe só podem ser acessados pelas funções da classe ou por funções friends.

- Apresentamos o acesso protected como um nível de proteção intermediário entre o acesso public e o acesso private.

Protected pode ser acessado por membros da classe e funções friends mais também por membros de classes e funções friends de classes derivadas.

Ele não pode ser acessado diretamente por objetos como privates da vida.

OBS: Membros protected ROMPE o encapsulamento. Logo, se você mexer nela na classe base, terá que mexer nas classes derivadas também.

A Herança em C++ é feita da seguinte forma:

class Nome_da_Classe_Filha : public Nome_da_classe_Pai {
...
}

O : public significa em C++ o tipo de herança!
Uma classe derivada não pode acessar diretamente membros private de sua classe base;

Ao derivar uma classe base, a classe base pode ser derivada como public, protected ou private.

Ao derivar a partir de protected , os membros public e protected da classe base tornam-se membros protected da classe derivada.

Se private, metodos public e protected são transformados em private na classe base..

Privates nunca são extendiveis.


Sobreescrevendo membros da classe base em uma classe derivada

Em C++ existe sobrecarga e sobreescrita de função.
Quando vc muda os parametros da função, vc está sobrecarregando
e quando vc está fazendo a mesma função da classe base vc está sobreescrevendo a função.

A função sobreescrita da classe base não será mais executada.
Mais vc pode chamar ela usando o nome da classe base da seguinte forma
PAI::função();

Se vc se esquecer dos dois pontos em uma função sobreescrita, vc está ferrado
por que isso se resultará em uma função recursiva infinita.