Herança


Herdar para quê?

Qual o programador que nunca se viu desenvolvendo programas através da cópia de longos trechos de código e da realizacão de pequenas alteracões neste código? O mecanismo de herança presente em linguagens orientadas a objeto se propõe a resolver este problema.

Definição de Herança

Herança consiste na construção de novas classes através da especialização de classes pré-existentes.

As classes pré-existentes, chamadas de superclasses, contêm variáveis e métodos genéricos e inespecíficos. As classes a serem construídas, chamadas de subclasses, aproveitam tudo que já está definido nas superclasses e modificam ou acrescentam apenas as (poucas) alteracões que lhes são específicas.

Benefícios no Uso de Herança

O resultado esperado com o uso adequado de herança é uma reducão geral no tamanho do código, e a construção de bibliotecas de classe com grande capacidade de reuso. O impacto se dá principalmente na melhoria da qualidade dos programas, redução do esforço de desenvolvimento e manutenção de programas.

Herança no Banco de Java

Podemos, por exemplo, usar herança na definição de tipos específicos de conta bancária. As características comuns a todos os tipos de contas bancárias que existem são definidas na superclasse ContaBancaria. Observe a figura:

Parte do código da classe ContaBancaria é o seguinte:
class ContaBancaria {
    int saldoAnterior, saldoAtual;
    Transacao[] transacoes;
    ...
}
As contas de poupança e conta corrente são casos específicos de conta bancária. Sendo assim as classes Poupanca e ContaCorrente herdam da classe ContaBancaria, e acrescentam ou redefinem apenas as variáveis e métodos que lhes são específicos.
class Poupanca extends ContaBancaria {
    int jurosAcumulados;
    float taxaJuros;
    ...   
}

class ContaCorrente extends Contabancaria {
    ...
}
Contas de cheque especial, por outro lado, são contas bancárias com características específicas. Sendo assim a classe ContaEspecial herda da classe ContaCorrente, e acrescenta ou redefine apenas as características que lhes são específicas.
class ContaEspecial extends ContaCorrente {
    int limite;
    float taxaJuros;
    ...
}

[Back] [Forward] [Index]
Curso Introdutório de Java - Copyright, 1996 Recife Java Team