Classes Abstratas – JAVA
Posted by Vinicius Quaiato | Posted in Java | Posted on 27-02-2009-05-2008
0
Segue abaixo a solução para a seguinte situação:
Uma classes abastrata, Pessoa, e duas classes derivadas, com o método CalcularImpostos.
import java.util.ArrayList;
public abstract class Pessoa{
public Pessoa(){}
private static ArrayList _impostos = new ArrayList(java.util.Arrays.asList(10,20,30,40,50));
public static ArrayList getImpostos(){return _impostos;}
public abstract double CalcularImpostos();
}
Assim definimos nossa classe Pessoa.
Ela possui dois métodos, um deles é meramente auxiliar, pois irá nos fornecer uma lista de valores, para efetuarmos uma conta.
O outro método é marcado com o modificador abstract e devemos notar que ele apenas possue os parenteses, não possui nenhum corpo. Isto significa que ele deve ser implementado pelas classes derivadas.
Assim vamos ver como ficou a implementação de nossas classes derivadas.
Primeiro PessoaJuridica:
import java.util.Iterator;
public class PessoaJuridica extends Pessoa{
public double CalcularImpostos(){
Integer resultado = 0;
for(Iterator impostos = getImpostos().iterator(); impostos.hasNext();){
resultado+=((Integer)impostos.next()) + 2;
}
return resultado;
}
}
E a classe PessoaFisica:
import java.util.Iterator;
public class PessoaFisica extends Pessoa{
public double CalcularImpostos(){
Integer resultado = 0;
for(Iterator impostos = getImpostos().iterator(); impostos.hasNext();){
resultado+=((Integer)impostos.next());
}
return resultado;
}
}
Agora no método main invocamos as duas classes e vemos os resultados calculados de acordo com os métodos de cada tipo da classe pessoa:
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
Pessoa fisica = new PessoaFisica();
Pessoa juridica = new PessoaJuridica();
System.out.println("Pessoa Física:");
for(Iterator impostos = Pessoas.getImpostos().iterator(); impostos.hasNext();)
System.out.println(impostos.next() + "+");
System.out.println("-------------------");
System.out.println(fisica.CalcularImpostos());
System.out.println("Pessoa Jurídica:");
for(Iterator impostos = Pessoas.getImpostos().iterator(); impostos.hasNext();)
System.out.println("(" + impostos.next() + "+2) +");
System.out.println("-------------------");
System.out.println(juridica.CalcularImpostos());
}
}
Bom é isso, qualquer dúvida ou sugestão, estamos aqui.
