Um Exemplo Completo

Vimos até agora diversos exemplos do uso de herança para acessar atributos das classes ancestrais. Vamos mostrar agora a herança utilizando os métodos dessas classes.

Listagem 5 - Classe Transporte
Listagem 6 - Classe Terrestre
Listagem 7 - Classe Automóvel

As Listagens 5, 6 e 7 apresentam o código das classes Veículo, Terrestre e Automóvel, incluindo a implementação dos métodos get e set para cada atributo das classes.

Cada um dos métodos declarados na classe Veículo são herdados pelas classes Terrestre e Automóvel, assim como os métodos declarados pela classe Terrestre são herdados pela classe Automóvel, exatamente como ocorre com os atributos.

A Listagem 8 apresenta um método main() que cria um objeto da classe Automóvel, em seguida, chama dois métodos setCapacidade() e setNumRodas(). Observe pelas Listagens 5 , 6 e 7 que tais métodos não pertencem à classe Automóvel, mas são na verdade herdados de suas ancestrais. Dessa forma, percebe-se claramente que uma vez declarado um método (público ou protected) em uma das classes ancestrais, aquele método é visível em objetos das classes filhas.

Listagem 8 - Classe Principal

Uma pergunta: será que a herança também permite o uso de outros métodos diferentes dos get e para as classes descendentes?

A resposta é sim, a herança serve para todos os métodos, desde que a classe mãe permita. Se um método estiver com modificador private, esse método não estará acessível para classes filhas. Assim, apenas estão acessíveis para classes filhas, os métodos declarados como public e protected na classe mãe.

Vejamos um exemplo do uso de outros métodos. Vamos acrescentar agora à classe Terrestre um método que calcula o número de pneus reservas.

Listagem 9 - Classe Terrestre com método calculaNumPneusReserva()

Na Figura 10, vemos a classe Principal modificada para criar um objeto Automóvel e acessar diretamente o método calculaNumPneusReserva() que foi herdado da classe Transporte. Como era de se esperar, mesmo o método sendo da classe Terrestre a classe Automóvel usa sem restrição.

Listagem 10 - Método main modificado

Versão 5.3 - Todos os Direitos reservados