Cursos / Jogos Digitais / Programação Orientada a Objetos / Aula
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.
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:
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.
Classes que fornecem a Herança | Classes que herdam de Outras |
---|---|
Superclasse | Subclasse |
Mãe | Filha |
Tipo | Subtipo |
Base | Derivada |
IMPORTANTE
Versão 5.3 - Todos os Direitos reservados