Qual a importância e o impacto de uma classe abstrata em Java?

5 respostas
Rickgauden

Já li algumas coisas em relação a memória mas não consigo entender a ideia. :?

5 Respostas

lucas_vieira

O nome sugere + ou - a idéia (porém não é tão claro). Os conceitos envolvidos quando se fala de classes e métodos abstratos são recorrentes da Orientação a Objeto.
Simplificando, uma classe (ou um método) abstrata(o) serve de modelo (em alguns casos até de regra) para outras classes concretas.
As classes concretas herdam as características da classe abstrata.
Exemplificando:

A classe animal ditara as regras de implementação para as demais classes que herdem suas propriedades.

public abstract class Animal {
    private String nome;
    private String familia; //mamifero, etc...

    //metodos aabstratos obrigatoriamente serão impmentados
    public abstract void andar();
    public abstract void respirar();


}

Agora quero criar um animal, vou criar um cachorro. Sabendo que ele é um animal ele deve herdar da classe animal

public class Cachorro extends Animal {

    //como pode ser visto os metodos definidos na classe "Animal" foram implementados na classe "Cachoro"
    @Override
    public void andar() {
       System.out.println("Andou");
    }

    @Override
    public void respirar() {
        System.out.println("Respirou"); 
    }

}

Basicamente é isso (mas tem muito mais assuntos envolvidos, orientação não é tão simples assim). Se falei besteira a galera mais experiente me corrija :oops:
Aconselho a estudar orientação objeto (e depois estudar as particularidades da Orientação a objeto em Java) pode te poupar muito esforço.

Rickgauden

Obrigado pela ajuda mas o que eu pude entender da sua explicação é que a classe abstrata regra o que as classes que farão a herança têm que implementar.
Além disso quero saber qual a revolução que a classe abstrata traz com relação a desempenho, consumo de memória e como seria a OO sem as classes abstratas.
Não sei se estou enganado, mas não é o implements que me obriga a utilizar todos os métodos declarados?

lucas_vieira

Então cara, os detalhes de desempenho desconheço, e se vc avaliar vai mudar pouco pois na grande maioria das vezes vc só utiliza o conteúdo da classe abstrata (como se mesclasse as classes), porém com relação a Orientação a Objeto te ajuda a organizar melhor teus projetos, ou seja sem as classes abstratas vc conseguiria implementar normalmente, porém haveria repetição de código, seria difícil definir regras (que alguns frameworks utilizam muito) de implementação.
O lance de obrigatoriedade de implementação é pq os métodos tbm são abstratos, o implements obrigaria implementar tanto os métodos normais quanto os abstratos (quis dar um exemplo de métodos abstratos tbm).

Se tem vontade de continuar programando em Java não deixe de se aprofundar na Orientação a Objeto, pois ela é o “coração” dessa linguagem.

Espero ter ajudado.

Abraço

Rickgauden

É, vou continuar estudando.
Obrigado por sua ajuda lucas_vieira

lucas_vieira

Que isso cara :smiley:
Estamos aqui para ajudar (e se ajudados).

[ Se consegui esclareci tua duvida muda o titulo do tópico para resolvido ]

Abraço

Criado 22 de maio de 2011
Ultima resposta 22 de mai. de 2011
Respostas 5
Participantes 2