Programação Orientada a Objetos: Herança em Java

porLuis Augusto Moretto

Programação Orientada a Objetos: Herança em Java

Herança

Programação orientada a objetos

A idéia de herança é simples, mas poderosa. Quando você quer criar uma nova classe e já existe uma classe que inclui algum código que você deseja, é possível derivar sua nova classe da classe existente.

Ao fazer isso, você pode reutilizar os atributos e métodos da classe existente sem ter que escrever (e depurar!)

Uma subclasse herda todos os membros (campos, métodos e classes aninhadas) de sua superclasse.

Os Construtores não são membros, portanto não são herdados por subclasses, mas o construtor da superclasse pode ser invocado a partir da subclasse.

NOTA:Na Programação orientada a objetos a herança é simples: uma classe só pode ter uma super classe. Ou seja não é possível herdar de duas classes ao mesmo tempo em Java!

Exemplo de herança com java

Neste exemplo temos a classe Pessoa e Motorista. A Classe Motorista tem acesso aos membros da classe “pai” Pessoa.  A palavra reservada extends informa que a classe é filha de. A palavra reservada super chama o construtor da classe pai dentro do próprio construtor de classe

Curso de Java 8 para Web
Curso de Java 8 para Web

Construtor

É da responsabilidade da subclasse inicializar os atributos definidos na sua classe, assim como os atributos que herda das suas superclasses.

  • O construtor da subclasse pode delegar a inicialização dos atributos herdados para a superclasse, chamando, implícita ou explicitamente, o construtor da superclasse. 
  • Um construtor da subclasse pode fazer uma chamada explícita de um construtor da superclasse através do super().
  • Se o construtor da superclasse tiver N parâmetros, estes devem ser passados na chamada explícita: super(param1,…,paramN).
  • Pode se chamar outro construtor da classe usando o this(parametros).
  • Se nenhum construtor da superclasse é chamado, ou se nenhum construtor da classe é chamado, como primeira instrução do construtor, o construtor sem argumentos da superclasse é implicitamente chamado antes de qualquer instrução no construtor.
  • Se a superclasse não tiver um construtor sem
    argumentos, é necessário chamar explicitamente um construtor da superclasse.

Exercício

Dado os diagramas de classes abaixo implementar:

  • As classes definindo atributos (abstração) para as mesmas e fazendo o encapsulamento 
  • Implementar para cada classe um construtor com parâmetros e o default;
  • Implementar a herança conforme a figura abaixo;
  • Instanciar cada uma das classes informando seus atributos na tela com System.out.println(‘…’)