FATEC – São Caetano do Sul
Java – Classes Abstratas
Prof. Msc. Flávio Viotti
1
FATEC – São Caetano do Sul
Classes Abstratas
Definição
Uma classe abstrata é uma classe que não é concebida para
criar instâncias. Seu propósito é servir como uma superclasse
para outras classes. As classes abstratas podem conter
métodos abstratos.
Importante
Nenhuma classe abstrata pode ser instanciada, ela deve ser
estendida.
public abstract class Animal {
public abstract void fala();
}
«Abstract»Animal
+fala()
Prof. Msc. Flávio Viotti
2
FATEC – São Caetano do Sul
Classes Abstratas
Métodos Abstratos
Classes abstratas com métodos abstratos forçam as
subclasses concretas a sobrescrever os métodos e
implementa-los.
Pode existir também a necessidade de se fazer uma
sobrecarga de um método com programação na classe
abstrata.
«Abstract»Animal
public class Gato extends Animal{
public void fala() {
System.out.println(“miau!!”);
}
}
public class Cachorro extends Animal{
public void fala() {
System.out.println(“Au Au!!”);
}
}
Prof. Msc. Flávio Viotti
+fala()
Gato
Cachorro
3
FATEC – São Caetano do Sul
Classes Abstratas
Métodos Concretos em Classes Abstratas
Diferente das interfaces uma classe abstrata pode possuir
métodos concretos, ou seja, um método com
comportamento. Esse método pode ser sobrescrito pela
classe concreta, ou ser utilizado com sua própria
programação.
«Abstract»Animal
+fala()
+anda()
Gato
Canguru
Cachorro
+anda()
Prof. Msc. Flávio Viotti
4
FATEC – São Caetano do Sul
Classes Abstratas
Prática
Crie um projeto e implemente as classes Animal, Gato e
Cachorro juntamente com uma classe chamadora que
possua o método main(…).
public abstract class Animal {
public abstract void fala();
public void anda() {
System.out.println(“Estou andando...”);
}
}
Agora implemente a classe Canguru sobrescrevendo o
método anda da seguinte maneira…
public class Canguru extends Animal {
public void anda() {
System.out.println(“Estou pulando para andar”);
}
}
Prof. Msc. Flávio Viotti
5
FATEC – São Caetano do Sul
Classes Abstratas
Problema
Como a classe Animal poderia chamar seu método anda sem
saber qual o tipo de Animal que estará andando????
public abstract class Animal {
public abstract void fala();
public void anda() {
System.out.println(“Estou andando...”);
}
public final void mover(Animal a) {
a.anda();
}
}
Esse tipo de construção permite que uma classe abstrata
invoque um determinado método de uma classe concreta
sem saber nada sobre essa classe concreta…..
Prof. Msc. Flávio Viotti
6
FATEC – São Caetano do Sul
Interfaces
Exercicios
1 – Para o driagrama de classes abaixo, implemente todas as
funcionalidades necessárias, juntamente com o método main(...) a
criação de uma conta corrente e uma conta poupança com
depósitos para cada uma, e voce deverá deixar negativo o saldo da
conta corrente. A atualização do saldo de uma conta corrente só
deverá ocorre caso a mesma esteja negativa, enquanto a
atualização de uma conta poupança ocorrerá com o saldo positivo.
Salve o projeto com “Ex-Abstrato”
«Abstract»Conta
Implemente tambem no método main
-saldo : double
um método que devolva o saldo de
+retirada(in valor : double)
+deposita(in valor : double)
qualquer tipo de conta.
+getSaldo() : double
+<<Abstract>>correcaoMonetaria()
ContaCorrente
Prof. Msc. Flávio Viotti
ContaPoupanca
7
Download

Classe Abstrata - BACH MA8 - FATEC São Caetano do Sul 2012/2