Boa noite senhores. Não consigo encontrar o motivo pelo qual o desconto de 20 centavos acontece quando uso o método transferir. Reescrevi o método sacar na classe ContaCorrente, quando realizo o saque o desconto acontece, mas não funciona na transferência.
public Conta(int agencia, int numero) {
Conta.total++;
this.agencia = agencia;
this.numero = numero;
/* System.out.println("Conta criada com sucesso!");
System.out.println("Agência: " + agencia);
System.out.println("Conta Corrente: " + numero);
System.out.println("Nosso banco possui " + Conta.total + " contas criadas");*/
}
public void depositar(double valor) {
this.saldo += valor;
}
public boolean sacar(double valor) {
if (this.saldo >= valor) {
this.saldo -= valor;
return true;
} else {
System.out.println("Saldo insuficiente");
return false;
}
}
public boolean transferir(double valor, Conta destino) {
if (this.saldo >= valor) {
this.saldo -= valor;
destino.depositar(valor);
return true;
} else {
System.out.println("A operação não foi concluída, saldo insuficiente.");
return false;
}
}
public class ContaCorrente extends Conta{
public ContaCorrente(int agencia, int numero) {
super(agencia, numero);
}
@Override
public boolean sacar(double valor) {
return super.sacar(valor + 0.2);
}
}
public class TestaContas {
public static void main(String[] args) {
ContaCorrente cc = new ContaCorrente(7777, 1234);
ContaPoupanca cp = new ContaPoupanca(5555, 456789);
cc.depositar(100);
cp.depositar(200);
// System.out.println("CC "+cc.getSaldo());
// System.out.println("CP "+cp.getSaldo());
cc.transferir(10, cp);
System.out.println("CC " +cc.getSaldo());
System.out.println("CP " +cp.getSaldo());
cc.sacar(20);
System.out.println(cc.getSaldo());
}
}