2
respostas

Não entendi o Destino.deposita(valor) , "Destino" virou uma referência da Conta, e está invocando o método "Deposita"?

  public boolean transfere(double valor, Conta destino) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        }
        return false;
    }
2 respostas

O "destino.deposita(valor)" é a chamada da função deposita. O "destino." é a referência ao objeto, a conta que você quer que "receba" o dinheiro transferido, que irá chamar essa função. A variável destino nada mais é do que uma variável genérica, você pode colocar qualquer nome nela, esse nome "destino" é como se fosse uma "máscara" da referência dada ao objeto criado na função Main. Em resumo, o destino nada mais é do que o a referência do objeto que você está passando como parâmetro.

Oi Diego, tudo bem?

É isso mesmo, destino foi o nome que nós demos à referência de Conta que foi passada como parâmetro no método transfere:

 public boolean transfere(double valor, Conta destino) {
        //Código omitido
    }

Como podemos ver, o método transfere deve receber 2 parâmetros: o valor (double) e o destino (Conta). Portanto, como você disse, o destino, por ser uma referência do tipo Conta, pode usar o método deposita.

Anteriormente, usamos o método deposita através da referência conta do tipo Conta, como nesse exemplo, onde instanciamos um objeto de Conta para depois invocar seus métodos:

public class TesteSacaNegativo { 
    public static void main(String[] args) {
        Conta conta = new Conta();
        conta.deposita(100);
        //Código omitido
    }
}

Como agora estamos criando o método transfere que faz uso do método deposita, precisamos ter uma referência de Conta dentro de transfere para poder invocar o deposita, mas antes disso, nós também precisamos dar um nome para a referência de Conta que será passada como parâmetro (no nosso caso, destino).

Qualquer dúvida é estou aqui!

Bons estudos!!