Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no Ex. 5 da Aula 3 - Classes Abstratas

Galera, seguinte... ta tudo muito confuso pra mim.... se eu coloco abstract na minha classe ContaCorrente ele pára de compilar... e na classe AtualizadorDeContas me pede para que eu crie o método atualiza(); e no enunciado do exercicio me pede pra fazer exatamente o contrario... pede para que eu coloque a classe ContaCorrente como abstract que o código volta a compilar....

vou mostrar meu código para que vocês me ajudem...

Classe Conta

package conta;

public abstract class Conta {
    protected double saldo;

    public double getSaldo() {
        return this.saldo;
    }

    public void deposita(double valor) {
        this.saldo += valor;
    }

    public void saca(double valor) {
        this.saldo -= valor;
    }

    public abstract void atualiza(double taxaSelic);
}

Classe ContaCorrente

 class ContaCorrente extends Conta {
    public void atualiza(double taxa) {
        this.saldo += this.saldo * taxa * 2;
    }
}

Classe ContaPoupanca

package conta;

class ContaPoupanca extends Conta {
    public void atualiza(double taxa) {
        this.saldo += this.saldo * taxa * 3;
    }

    public void deposita(double valor) {
        this.saldo += valor - 0.10;
    }
}

Classe AtualizadorDeContas

package conta;

class AtualizadorDeContas extends Conta {
    private double saldoTotal = 0;
    private double selic;

    public AtualizadorDeContas(double selic) {
        this.selic = selic;
    }

    public void roda(Conta c) {
        System.out.println("===============");
        System.out.println("Saldo anterior " + c.getSaldo());
        c.atualiza(this.selic);
        System.out.println("Saldo Atual " + c.getSaldo());
        this.saldoTotal += c.getSaldo();
    }

    public double getTotalSaldo() {
        return this.saldoTotal;
    }

    public static void main(String[] args) {
        Conta cc = new ContaCorrente();
        Conta cp = new ContaPoupanca();

        cc.deposita(1000);
        cp.deposita(1000);

        AtualizadorDeContas adc = new AtualizadorDeContas(0.01);

        adc.roda(cc);
        adc.roda(cp);

        System.out.println("Saldo Total: " + adc.getTotalSaldo());
    }

    @Override
    public void atualiza(double taxaSelic) {
        // TODO Auto-generated method stub

    }

}

Já quebrei a cabeça com isso... to pensando em desistir kkkk

abraços!

2 respostas
solução!

Oi Anderson,

Caso você extender a classe que possui esse método atualiza setado como abstract, você precisa implementa-lo na subclasse ou setar como abstract novamente, depende da sua regra de negócio.

Se você setar a classe como abstract você não consegue criar o objeto dela, veja no seu método main, você já esta tentando criar o objeto de ContaCorrente, então caso você mudar para abstract agora, não compila.

Valeu Douglas