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

Problema com @Override

Não estou conseguindo fazer com que ao transferir da Conta Corrente para outra conta seja descontado os 20 centavos como foi exemplificado na aula.


public class Conta {
    private double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total = 0;

    public Conta(int agencia, int numero) {
        Conta.total++;
        //System.out.println("O total de contas é " + Conta.total);
        this.agencia = agencia;
        this.numero = numero;
        //this.saldo = 100;
        //System.out.println("Estou criando a conta " + this.numero);
    }

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

    public boolean saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        } else {
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        }
        return false;
    }

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

    public int getNumero() {
        return this.numero;
    }

    public void setNumero(int numero) {
        if (numero <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.numero = numero;
    }

    public int getAgencia() {
        return this.agencia;
    }

    public void setAgencia(int agencia) {
        if (agencia <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.agencia = agencia;
    }

    public void setTitular(Cliente titular) {
        this.titular = titular;
    }

    public Cliente getTitular() {
        return this.titular;
    }

    public static int getTotal() {
        return Conta.total;
    }
}

public class ContaCorrente extends Conta {

    public ContaCorrente(int agencia, int numero) {

        super(agencia, numero);

    }

    @Override
    public boolean saca(double valor) {
        double valorASacar = valor + 0.2;
        return super.saca(valorASacar);
    }

}

public class testeConta {

public static void main(String[] args) {

    ContaCorrente cc = new ContaCorrente(1111, 222222);
    cc.deposita(100.0);

    ContaPoupanca cp = new ContaPoupanca(234234, 65464);
    cp.deposita(200.0);

    cc.transfere(10.0, cp);

    System.out.println("O saldo CC " + cc.getSaldo());
    System.out.println("O saldo CP " + cp.getSaldo());


}

}

No testeConta, ao exibir o saldo após a transferência, ele me devolve o saldo menos o valor que transferi, sem contabilizar os 20 centavos que eu coloquei na classe ContaCorrente

4 respostas

Opa, consegui resolver. O problema estava no meu método transfere na classe Conta =)

Olá João!

Poderia compartilhar conosco como resolveu o problema?

Isso pode ajudar outros alunos com o mesmo problema.

Desde já, obrigado! ^^

solução!

Alterei o método transfere tirando "this.saldo -= valor;". Porque dessa forma ele não estava considerando a transferência como um "saque" da conta correte de origem, então não cobrava os 20 centavos de taxa que estavam determinados no método "saca" da classe ContaCorrente. O método que funciona ficou dessa forma:

    public boolean transfere(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saca(valor);
            destino.deposita(valor);
            return true;
        }
        return false;
    }

Massa João! Muito obrigado.

Irei marcar sua resposta como solução.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software