Embora o ActionScript ainda não tenha recursos de classes e métodos abstratos, não custa não a gente procurar entender um pouquinho mais de Orientação a Objetos. De repente na próxima versão do AS a gente consegue criar classes que não sejam concretas e daí você já vai saber as razões e os motivos de usá-las.
Normalmente as pessoas comparam muito interfaces com classes abstratas, mas são coisas completamente distintas e com objetivos bem diferentes, por isso, ao contrário da maioria, não vou abordar as duas coisas juntas.
Características das classes abstratas:
- Pode-se dizer que é uma classe incompleta.
- Não pode ser instanciada (perfeitamente justificada pelo item acima).
- Pode ou não ter métodos abstratos (tem quem diga que deve ter pelo menos um, caso contrário poderia ser uma classe concreta, mas isso é uma questão de ponto de vista e de quão a risca se deve seguir a teoria).
- Uma classe que tenha um método abstrato deve ser obrigatoriamente declarada como abastrata, ou seja, não existe método abstrato fora de uma classe abstrata.
- Pode ou não ter métodos concretos.
- Quando uma classe concreta herdar uma classe abstrata todos os métodos abstratos devem ser implementados.
- Uma classe abstrata pode herdar outra classe abstratas e os métodos abstratos só serão obrigatórios na primeira classe concreta da hierarquia.
Assim como com classes concretas e interfaces podemos utiizar delas também para realizar operações polimórficas.
As classes abstratas são bastante usadas como template, se quiser entender um pouquinho mais sobre isso, dá uma olhadinha aqui: Template Method.
Tags: classes abstratas