O meu código está escrito da seguinte forma:
public class Conta {
private double saldo;
private int agencia;
private int numero;
private static int total;
public Conta(int agencia, int numero) {
total++;
this.agencia = agencia;
this.numero = numero;
}
public double getSaldo() {
return saldo;
}
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 static int getTotal() {
return total;
}
}
public class ContaCorrente extends Conta {
public ContaCorrente (int agencia, int numero) {
super(agencia, numero);
}
@Override
public boolean saca(double valor) {
double valorSaque = valor + 0.2;
return super.saca(valorSaque);
}
}
public class ContaPoupanca extends Conta {
public ContaPoupanca (int agencia, int numero) {
super(agencia, numero);
}
}
No entanto, quando eu tento executar o main:
public class Sistema {
public static void main(String[] args) {
ContaPoupanca primeiraConta = new ContaPoupanca(45, 23455);
ContaCorrente segundaConta = new ContaCorrente(45, 23456);
primeiraConta.deposita(500.0);
segundaConta.deposita(350.0);
segundaConta.transfere(100.0, primeiraConta);
System.out.println(primeiraConta.getSaldo());
System.out.println(segundaConta.getSaldo());
}
}
O output é 600 e 250, ao invés de 600 e 249.8, como deveria ser.
O que eu estou fazendo de errado?