Estava fazendo um teste para instanciar os métodos no programa. Ocorreu um problema, que é quando eu instancio o depósito não aparece o valor que será depositado na outra conta. Porém, quando instancio a transferência aparece o valor que sera transferido e depositado igualmente na outra conta.
public abstract class Conta {
protected double saldo;
private int agencia;
private int numero;
private Cliente titular = new Cliente(null, null, null);
private static int total;
public Conta(int agencia, int numero) {
if(agencia < 0 || numero < 0) {
throw new ContaException("O número e agência da sua conta deve ser positivo.");
}
this.agencia = agencia;
this.numero = numero;
total++;
}
public abstract void depositar(double valor, Conta destino);
public void sacar(double valor) {
if(this.saldo < valor) {
throw new SaldoInsuficienteException("Saldo: " + this.saldo + ", Valor: " + valor );
}
else if(valor < 0) {
throw new IllegalArgumentException("Apenas números positivos...");
}
this.saldo -= valor;
}
public void transfere(double valor, Conta destino) {
this.sacar(valor);
destino.depositar(valor, destino);
}
public void setSaldo(double saldo) {
if(saldo < 0) {
throw new IllegalArgumentException("Apenas números positivos...");
}
this.saldo = saldo;
}
public void setNumero(int numero) {
this.numero = numero;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
public double getSaldo() {
return this.saldo;
}
public int getNumero() {
return numero;
}
public int getAgencia() {
return agencia;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
public Cliente getTitular() {
return this.titular;
}
public static int getTotal() {
return total;
}
}
public class ContaCorrente extends Conta {
public ContaCorrente(int agencia, int numero) {
super(agencia, numero);
}
@Override
public void sacar(double valor) {
super.sacar(valor);
}
@Override
public void transfere(double valor, Conta destino) {
super.transfere(valor, destino);
}
@Override
public void depositar(double valor, Conta destino) {
super.saldo += valor;
}
}
public class TestaConta4 {
public static void main(String[] args) {
ContaCorrente ccArthur = new ContaCorrente(123,123123);
ContaCorrente ccRicardo = new ContaCorrente(233,423123);
ccArthur.setSaldo(2000);
//ccRicardo.setSaldo(250);
ccArthur.depositar(250, ccArthur);
System.out.println("Arthur: " + ccArthur.getSaldo()); // ok!
ccArthur.sacar(133); // ok!
System.out.println("Arthur depois de sacar: " + ccArthur.getSaldo());
ccArthur.transfere(100, ccRicardo); // nao transfere valor para outra Conta!
System.out.println("Ricardo c/ transferencia: " + ccRicardo.getSaldo());
ccArthur.depositar(300, ccRicardo); // nao deposita valor para outra Conta!
System.out.println("Ricardo c/ deposito recebido: " + ccRicardo.getSaldo());
}
}