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