Herança

Calma, você não recebeu uma herança em bens dos seus parentes!!! Mas, a Herança na POO tem uma certa ligação com grau de parentesco. Vamos descobrir que os objetos podem ter Mãe!

Eu sou um objeto?!?! Eu quero a minha Mãe!!!

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

Orientação a objetos

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 2 a seguir.

Exemplo de herança entre classes

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 transportar. 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 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, de acordo com a Figura 2, 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. Exemplo: a Figura 2 representa uma hierarquia de herança ou hierarquia de classe.

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 2 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.

Versão 5.3 - Todos os Direitos reservados