Bom dia Gabriel!
Eu encontrei a mesma dificuldade do Zenildo, com o valor de 20 centavos que não está sendo descontado da conta corrente.
Eu verifique que, conforme a sugestão apresentada com a inserção da linha cc.saca(10.0);
ocorre o desconto dos 20 centavos.
Mesmo assim eu fique com dúvida, levando em conta o problema proposto.
Como o teste desta funcionalidade iria ser feito através da classe TesteContas
public class TesteContas {
public static void main(String[] args) {
ContaCorrente cc = new ContaCorrente(111, 111);
cc.deposita(100.0);
ContaPoupanca cp = new ContaPoupanca(222, 222);
cp.deposita(100.0);
cc.transfere(10.0, cp);
System.out.println("CC: " + cc.getSaldo());
System.out.println("CP: " + cp.getSaldo());
}
}
Verifiquei que o método transfere é executado dentro da classe Conta
public boolean transfere(double valor, Conta destino) {
if(this.saldo >= valor) {
this.saldo -= valor;
destino.deposita(valor);
return true;
}
return false;
}
Não está chamando o método saca da classe ContaCorrente
public class ContaCorrente extends Conta {
public ContaCorrente(int agencia, int numero){
super(agencia, numero);
}
@Override
public boolean saca(double valor){
System.out.println("Entrando no método saca de ContaCorrente");
double valorASacar = valor + 0.2;
return super.saca(valorASacar);
}
}
Neste caso ele faz a transferência mas não faz o desconto dos 20 centavos. Se adiciono ao método Transfere da ContaCorrente a linha
this.saca(valor);
é feito o depósito na outra conta corretamente , mas retira duplicado o valor transferido e a tarifa de 20 reais.
Você pode me ajudar a identificar onde está o meu erro?
Desde já agradeço a sua atenção.