O documento discute classes abstratas em Java. Ele define classes abstratas como superclasses que servem de modelo para classes concretas mas não podem ser instanciadas diretamente. Ele fornece um exemplo de animais (Animal como classe abstrata e Gato e Cachorro como subclasses) e explica como declarar métodos e classes abstratas em Java usando a palavra-chave "abstract".
2. Linguagem de Programação III - Classes Abstratas
Agenda
•
•
•
•
•
•
•
•
•
•
2
Definição
Quando usar?
Um exemplo no mundo real
O mesmo exemplo utilizando classes
Em Java
Métodos abstratos
As classes concretas
Aumentando o exemplo
Por que não utilizar herança comum?
Conclusão
Lucas
3. Linguagem de Programação III - Classes Abstratas
Definição
“Classes abstratas organizam elementos comum
a várias classes.”
James Rumbaugh
Classes abstratas são superclasses que servem
apenas de modelo para classes concretas,
portanto não podem ser instanciadas
diretamente.
3
Lucas
4. Linguagem de Programação III - Classes Abstratas
Quando usar?
Usamos classes abstratas para representar
grupos que tem características em comum, mas
que diferem em detalhes específicos.
A classe abstrata implementa somente as
características gerais e seus métodos abstratos
são implementados nas subclasses com suas
peculiaridades.
4
Levy
7. Linguagem de Programação III - Classes Abstratas
O mesmo exemplo utilizando
classes
Animal é a nossa classe
abstrata, pois serve de
base para as classes
concretas, Gato e
Cachorro, por exemplo.
7
Levy
9. Linguagem de Programação III - Classes Abstratas
Em Java
Utilizamos a palavra-chave abstract para declarar
uma classe abstrata:
public abstract class Animal {
public void Andar() {
System.out.println("Estou andando!");
}
}
9
Jéssica
10. Linguagem de Programação III - Classes Abstratas
Em Java
Então já posso instanciar a minha classe abstrata
assim?
Animal animal = new Animal();
Não!
Você não pode instanciar uma classe abstrata!
10
Jéssica
11. Linguagem de Programação III - Classes Abstratas
Métodos abstratos
Podemos definir um método como abstrato, isso quer
dizer que ele deverá ser implementado nas classes
concretas.
Em Java, para declarar um método como abstrato
também utilizamos a palavra-chave abstract:
public abstract class Animal {
public abstract void FazerSom();
public void Andar() {
System.out.println("Estou andando!");
}
}
11
Jéssica
12. Linguagem de Programação III - Classes Abstratas
As classes concretas
public class Gato extends Animal {
public void FazerSom() {
System.out.println("Miau! miau!");
}
}
public class Cachorro extends Animal {
public void FazerSom() {
System.out.println("Au! Au!");
}
}
12
Jéssica
13. Linguagem de Programação III - Classes Abstratas
As classes concretas
Agora sim podemos instanciar um animal
específico:
Gato gato = new Gato();
gato.Andar(); // “Estou andando!”
gato.FazerSom(); // “Miau! Miau!”
Ou até mesmo:
Animal cachorro = new Cachorro();
cachorro.Andar(); // “Estou andando!”
cachorro.FazerSom(); // “Au! Au!”
13
Jéssica
15. Linguagem de Programação III - Classes Abstratas
Por que não utilizar herança
comum?
A única diferença é que não podemos instanciar
a classe abstrata, e se tratando de conceitos
abstratos, dá mais consistência ao sistema.
A decisão de transformar ou não uma classe em
abstrata depende do seu domínio.
15
Danilo
16. Linguagem de Programação III - Classes Abstratas
Conclusão
Classe abstrata é um recurso que podemos
utilizar quando queremos compartilhar
funcionalidades em comum entre classes, mas
não queremos permitir que ela seja instanciada
diretamente.
16
Danilo
17. Linguagem de Programação III - Classes Abstratas
Referências
• http://www.caelum.com.br/apostila-javaorientacao-objetos/classes-abstratas/
• http://www.inf.pucrs.br/flash/lapro2/aula_heran
ca/
• http://www.javaprogressivo.net/2012/10/Polimo
rfismo--Classes-abstratas-e-Metodosabstratos.html
17
Danilo