You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
HERANÇA E POLIMORFIS MO<br />
Se fôssemos criar uma classe para cada uma dessas categorias de funcionários, acabaríamos repetindo<br />
muito código, além do quê, perderíamos a importante relação existente entre os objetos dessas classes:<br />
todos são funcionários.<br />
Para resolver isso, a Orientação a Objetos define o conceito de herança, permitindo que subclasses<br />
sejam criadas a partir de uma classe original, mais genérica e conhecida como superclasse.<br />
No nosso exemplo, teremos a seguinte hierarquia de classes:<br />
nível 0<br />
nível 1<br />
nível 2<br />
SUPERCLASSE<br />
SUBCLASSE<br />
SUB SUBCLASSE<br />
Uma das grandes vantagens do uso de subclasses é o aumento da confiabilidade e facilidade de<br />
manutenção dos sistemas. Se, por acaso, precisarmos mudar o comportamento da classe Funcionario,<br />
as demais classes refletirão essa mudança sem a necessidade de serem todas reimplementadas. Por<br />
exemplo, se a regra para o cálculo do décimo terceiro salário for alterada pelo governo, bastará ao<br />
desenvolvedor alterar um único trecho de código, justamente o método "public void<br />
decimoTerceiro(Date dataAtual)" da classe Funcionário. Caso contrário o desenvolvedor teria que alterar<br />
todas as classes que implementassem o cálculo de décimo terceiro salário.<br />
Observe também que quanto mais abaixo na hierarquia, mais especializado se torna uma classe. A idéia<br />
é que as classes superiores sejam bastante genéricas, permitindo a representação mais abrangente<br />
possível das entidades que inspiraram o projeto dessa classe.<br />
A palavra reservada extends<br />
Em <strong>Java</strong> usamos a palavra reservada extends para definir uma subclasse. Essa palavra traduz a idéia<br />
de que uma classe está estendendo as características e a funcionalidade de sua superclasse. No nosso<br />
exemplo teríamos:<br />
// Essa classe herda todos os atributos e a funcionalidade da classe Funcionario<br />
public class AuxiliarDeLimpeza extends Funcionario<br />
{<br />
public void limpar(Sala aula)<br />
{<br />
// método que limpa uma sala de aula<br />
}<br />
62<br />
Professor<br />
Coordenador<br />
Funcionário<br />
Auxiliar<br />
de limpeza