Conceito e termos usados na herança

Você já ouviu falar sobre herança relacionada à programação? Estranho não é? A figura abaixo mostra os pilares da orientação objetos com destaque para a herança.

Figura 1 - Pilares da orientação a objetos

Descrição imagem

Vamos começar pela definição de herança. Herança é o mecanismo que permite a uma classe herdar todos os atributos e métodos de outra classe. Ela permite definir a implementação de uma nova classe na definição de uma classe previamente implementada. Como exemplo, observe a figura abaixo:

Figura 2 - Exemplo de Herança

Descrição imagem

Considere como classes as seguintes abstrações: Transporte, Aquático, Terrestre, Aéreo, Barco, Automóvel e Avião. Considere capacidade como um atributo da classe Transporte, que indica a quantidade de pessoas que o transporte em questão pode levar. E número de rodas como um atributo da classe Terrestre. E cor, número de portas e placa como atributos da classe Automóvel.

A figura 2 acima apresenta um exemplo de herança, onde as classes Aquático, Terrestre e Aéreo herdam da classe Transporte.

A classe Barco herda da classe Aquático. A classe Automóvel herda de Terrestre. E, finalmente, Avião e Aéreo.

Um aspecto importante que também podemos observar na figura é que toda classe que herda de uma outra acaba herdando também, como consequência, os seus atributos. Por exemplo, a classe Transporte possui um atributo chamado capacidade. Para a classe Aquático, como ela herda de Transporte, pode-se dizer que também possui o atributo capacidade. E Barco, como herda de Aquático, também possui o atributo capacidade. Com essa lógica, percebemos que na herança os atributos (e também os métodos) são herdados naturalmente pelas classes subsequentes na hierarquia.

Hierarquia de Classe ou de Herança: é o mapeamento do tipo árvore de relacionamentos que se formam entre as classes como resultado da herança.

Usando a mesma lógica, responda: Quantos e quais são os atributos da classe Terrestre? E da classe Automóvel?

Respondendo: a classe Terrestre possui dois atributos: capacidade (que é herdado de Transporte) e número de rodas. Já a classe Automóvel possui cinco atributos: capacidade (herdado de Transporte), número de rodas (herdado de Terrestre), cor, número de portas e placa.

Observe na figura acima que, quanto mais alta na hierarquia está a classe, mais ela tende a ser abstrata em comparação com as suas subsequentes. Ou seja, quanto mais alta na hierarquia, menos definida (abstrata) é a classe, e assim ela define menos atributos e métodos. Isso também garante que a classe tenha mais chances de ser reusada por outras classes que herdem da mesma. Entendeu? Não, então, vamos ao exemplo da figura. Suponha que a classe Transporte, além do atributo capacidade, possuísse também o atributo número de rodas. Ou seja, ela passa a ser uma classe mais concreta, menos abstrata. Mas, nesse caso, consequentemente, não seria interessante nem faria sentido para as classes Aquático e Aéreo herdar os atributos de Transporte (ou herdar de Transporte), pois o atributo número de rodas não é desejado por tais classes.

Termos usados na herança

Classes que fornecem a Herança Classes que herdam de Outras
Superclasse Subclasse
Mãe Filha
Tipo Subtipo
Base Derivada

IMPORTANTE

  • A classe filha não pode remover os atributos e métodos da classe mãe;
  • A classe mãe não conhece os métodos e atributos criados na classe filha.

Versão 5.3 - Todos os Direitos reservados