Cursos / Informática para Internet / Programação Orientada a Objetos / Aula
Ao longo dos nossos estudos sobre a programação orientada a objetos em Java, vimos os conceitos e vários exemplos de implementações 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 receberem a massa e darem objetos quentinhos! Mas, existem classes das quais não é possível gerar (instanciar) objetos, são as chamadas classes abstratas.
Primeiro, vejamos o que é uma classe abstrata.
Classe abstrata é aquela declarada como tal, através da palavra reservada abstract, e que pode definir pelo menos um método abstrato.
A Listagem 4 apresenta um exemplo de uma classe abstrata, chamada FiguraAbstrata. Uma figura abstrata representa uma figura qualquer, por isso não sabe como ser desenhada e, de fato, não pode ser instanciada, pois ela define um método abstrato (desenha) para se autodesenhar, que ainda está indefinido.
No nosso exemplo, a classe FiguraAbstrata indica que métodos as figuras derivadas dela (subclasses ou classes filha da mesma) devem realizar ou implementar. Esses métodos são os chamados métodos abstratos. Uma classe abstrata não pode instanciar objetos, porém, pode ser derivada por outras classes que, por sua vez, deverão implementar seus métodos ou declarar-se também abstratas.
Listagem 4 - Classe abstrata FiguraAbstrataA Listagem 5 apresenta a classe derivada Quadrado (subclasse) da classe FiguraAbstrata.
A classe Quadrado realiza o que precisa para ser desenhada, implementando o método desenha(). É possível criar instâncias (objetos) da classe Quadrado, porque ela não é abstrata nem é declarada como tal, e também define uma implementação concreta para o método desenha().
Listagem 5 - Classe QuadradoA importância das classes abstratas dá-se principalmente em tempo de projeto do sistema, cria um nível a mais de abstração e torna o projeto mais reutilizável.
A seguir, você verá algumas sugestões de artigos da web sobre classes abstratas:
Versão 5.3 - Todos os Direitos reservados