Como alguns outros, também tive dificuldade de transferir os 20 centavos. Daí percebi que o método "transfere" estava diferente do método do Nico. O meu estava assim:
public boolean transfere(double valor, Conta destino) {
if (this.saldo >= valor) {
this.saldo -= valor;
destino.deposita(valor);
return true;
} else {
return false;
}
E só funcionou quando deixei igual ao do Nico, assim:
public boolean transfere(double valor, Conta destino) {
if(this.saca(valor)) {
destino.deposita(valor);
return true;
} else {
return false;
}
Minha dúvida é: por que o método mudou? No primeiro, até onde eu entendo, ele testa se o valor do saque é menor do que o valor do saldo pra, aí sim, diminuir o valor do saque do saldo. Depois de retirar o valor ele transfere para o destino. Dessa forma a transferência não descontava os 20 centavos. No segundo método não temos a verificação de saque <= saldo e funciona o desconto dos 20 centavos.
Alguém poderia me explicar por que o segundo método desconta os 20 centavos e por que tiramos a verificação?
Obrigada!