Duvida nos parametros do metodo

Boa noite,
Estou estudando a apostila da caelum FJ-11 e estou com a seguinte duvida no codigo abaixo:

[code]class Conta {

String dono;
int numConta;
double saldo;
double limite;

void sacar ( double valor )
{
this.saldo -= valor;
}

void deposita ( double valor ){
this.saldo+=valor;
}
// não entendi o pq foi inserido o nome da classe junto com o destino.
void transfere(Conta destino, double valor){
this.saldo-=valor;
destino.saldo +=valor;
}

}

[code]class TestaConta {

public static void main (String[] args ){
Conta c1 = new Conta();	


c1.saldo=300;
c1.dono=" Juvenal ";
c1.sacar(0);
c1.deposita(500);



Conta c2 = new Conta();
c2.saldo=300;
c2.dono=" Duke ";
c2.sacar(0);
c2.deposita(500);



c1.transfere(c2,50);



System.out.println( c1.dono );
System.out.println(c1.saldo);

System.out.println( c2.dono );
System.out.println( c2.saldo );

}
}
[/code]

Poderiam esclarecer a linha 18 ?

O método realiza uma transferência de um objeto Conta1 para outro objeto Conta2.
Ele receberá no primeiro parâmetro o objeto da conta (c1, c2, c3,…) que deve ser realizada uma transferência para esta conta do objeto em uso ( o obj que você chama o método transfere ).

Ajudei :?: Até +…

Fala renatorudolf, beleza?

Complementando a ingridfarabulini…

O método “transfere” possui como argumento a conta a qual se refere o depósito e o valor que será transferido. No objeto “destino” do tipo “Conta” que está sendo passado como parâmetro, você identifica qual o dono, numero, saldo e limite da conta. Ao invés de passar todas essas informações separadas (dono, numConta, saldo e limite), aproveitou-se o objeto do tipo “Conta” que possui todas essas características. Isso foi feito por meio dessa parte do código:

   Conta c1 = new Conta();   
  
       
    c1.saldo=300;   
    c1.dono=" Juvenal ";   
    c1.sacar(0);   
    c1.deposita(500); 

Logo depois você passa a conta com os dados preenchidos (código acima) e o valor que será transferido.

 c1.transfere(c2,50);

Abraço e bons estudos.

Schwingel

Não sei se vc chegou na parte que fala sobre referencia de objeto.

void transfere(Conta destino, double  valor)

Você possui uma Conta instanciada em memória, e destino é uma variavel que aponta pra esse objeto. Para poder acessar todos os atributos e métodos desse objeto Conta, você precisará dessa variável referencia.
Então no método você está passando a referencia para o objeto Conta que ja está instanciado em memória, e não está passando o objeto.

santos.fernando

valew cara, entendi.

abraço