Cursos / Redes de Computadores / Programação Orientada a Objetos / Aula

arrow_back Aula 09 - Classes Abstratas e Interfaces

Classes abstratas

Classes concretas X Classes abstratas

Ao longo dos nossos estudos sobre a Programação Orientada a Objetos, vimos os conceitos e vários exemplos de implementação de classes e objetos. Você viu que as classes são como “moldes” que geram os objetos segundo a sua definição.

Todas as classes vistas até agora são o que chamamos de classes concretas, pois são utilizadas para gerar objetos diretamente. Ou, ainda, estão “prontas” para serem usadas para gerar seus objetos, como formas de bolo ou biscoitos prontas para recebere a massa e dare objetos quentinhos! Mas existem classes das quais não é possível gerar (instanciar) objetos, são as chamadas classes abstratas.

Classe abstrata é aquela declarada como tal, através da palavra reservada abstract, e que pode definir pelo menos um método abstrato.

Classes abstratas são usadas quando não faz sentido termos instância de determinadas classes e são classes básicas das quais outras classes podem ser derivadas. Elas não podem ser instanciadas diretamente.

Como definir uma classe abstrata

Observe na figura abaixo que a palavra abstract é utilizada antes da palavra class; ao utilizar a palavra abstract, essa classe não pode ser instanciada.

Figura 1 - Definição de classe abstrata

Descrição imagem

Como utilizar

Na figura 2, temos os exemplos onde duas classes (avião e barco) herdam de uma classe abstrata (brinquedo).

Figura 2 - Exemplos de classe abstrata

Descrição imagem Descrição imagem

Assim percebemos que mais uma vez utilizamos o conceito de herança. Na figura 3, segue uma figura como exemplo da utilização da classe abstrata como tipo mais genérico.

Figura 3 - Exemplos de classe abstrata - tipo genérico

Descrição imagem

É importante destacar na figura acima que a variável brinquedo é do tipo Brinquedo, assim é possível receber as instâncias de avião e barco, bem como utilizar o conceito de polimorfismo ao chamar os métodos específicos de cada objeto. Observe que a classe Brinquedo serviu apenas de molde, não sendo necessário instanciá-la em nenhum momento.

Métodos abstratos

  • Utilizados quando não faz sentido termos a implementação do método em determinada classe;
  • Para declarar um método abstrato, basta utilizar o modificador abstract na declaração no método;
  • Deve ser implementado pelas classes que herdam da classe.
Figura 4 - Métodos abstratos

Descrição imagem

Importante!

  • Classes Abstratas não precisam obrigatoriamente ter métodos abstratos;
  • Métodos Abstratos só podem existir em Classes Abstratas;
  • Uma classe abstrata que herda de outra classe abstrata, não é preciso implementar os métodos abstratos.

Campos abstratos

  • Na classe abstrata é possível definir atributos abstratos;
  • As subclasses são obrigadas a declará-los explicitamente;

Versão 5.3 - Todos os Direitos reservados