quarta-feira, 11 de maio de 2011

Um Pouco Sobre Abstração e Finalização de Classes Pt. 1

Um Pouco Sobre Abstração e Finalização de Classes (vulgos abstract, final)

Em um contexto bem simples podemos dizer que classes abstratas tem duas principais caracteristicas:

  1. É uma classe que não pode ser instanciada
  2. É uma classe que DEVE ser herdada
uma classe abstrata não pode ser instanciada, por quê quando você diz que ela é abstrata você está afirmando que a classe pode não estar pronta para execução, ou melhor dizendo que a classe não foi implementada, vou dar um exemplo:

public abstract class Carro{
    protected String cor;
    protected String modelo;
    protected String chassi;

    public void setCor(String cor);
    public void setModelo(String modelo);
    public void sobeRua(double velocidade);
    public void acelera();   
}

podemos reparar que nos temos a nossa classe carro com varios atributos: Cor, Modelo, Chassi, e com varias operações: setCor(), setModelo(), sobeRua() e acelera(), e se olharmos com mais atenção podemos ver que os metodos declarados não terminam do jeito convencional, com (Curly Braces) Chaves { },
estou dizendo que os métodos existem porém ainda não foram implementados e qualquer classe que extender da classe Carro vai ser OBRIGADA a implementar esses métodos por meio de @override (Sobrescrita), veremos mais a frente no capitulo de sobrescritas e sobreposição de comportamento. Mais outra caracteristica de uma classe abstrata é que eu posso definir métodos não abstratos, e já implementados ! segue um exemplo:

public abstract class Carro{
    //outros métodos e atributos importantes
    public void frearCarro(){
       //rotina de frear
    }
}

Conclusão:

Uma classe abstrata é uma abstração de uma classe real, ou seja uma abstração do que eu desejo levar para o mundo digital para que no futuro eu possa transformar em outro objeto que utiliza os mesmos métodos e atributos, uma classe abstrata Carro no futuro pode ter uma filha CarroBMW (que acelera mais) e implementa o próprio código para acelerar, ou um CarroFusca (que tem mais força e menos aceleração) e que do mesmo jeito implementa o próprio código para acelerar.
Isso acaba sendo muito importante para o Polimorfismo que veremos em outros posts.

E como digo sempre, caso meus leitores vejam algum erro nas minhas lógicas ou de sintaxe ou mesmo de grafia portuguesa, por favor deixem um comentario que terei o prazer de pesquisar mais sobre e acertar o que está errado ou não.

Obrigado e abraço a todos.

Nenhum comentário:

Postar um comentário