Fiquei na dúvida, eu poderia manter o atributo saldo da Classe mãe como private, e assim no método deposita eu passaria a conta a ser depositada como parâmetro, faria um conta.getSaldo, ao invés de mudar o atributo para protected.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Fiquei na dúvida, eu poderia manter o atributo saldo da Classe mãe como private, e assim no método deposita eu passaria a conta a ser depositada como parâmetro, faria um conta.getSaldo, ao invés de mudar o atributo para protected.
Oi Arthur, segundo sua proposta o método deposita ficaria com o mesmo comportamento do método transfere e não é o caso. O método deposita é para depositar o valor na conta que irá chamar este método:
//deposita valor na própria conta1
conta1.deposita(100.0)
//transfere valor para outra conta
conta1.transfere(50.0, conta2)
A situação que você descreve se parece mais com o método transfere. E no caso de manter o atributo saldo na classe mãe como private, nosso método transfere ficaria o mesmo já que o this.saldo faz referência ao objeto que chama o método (no caso, a conta1 do exemplo acima) e não da conta2 que recebemos por parâmetro:
public boolean transfere(double valor, Conta destino) {
if (this.saldo >= valor) {
this.saldo -= valor;
destino.deposita(valor);
return true;
}
return false;
}
Ficou claro?
public double depositando(double valor, ContaCorrente destino) {
double saldo = destino.getSaldo() + valor;
return saldo;
}
O que eu estava pensando era algo parecido com o code acima, mas não daria certo, viajei muito na lógica.
Oi Arthur, o problema aí é você está criando e retornando o valor de uma variável saldo e não está atualizando nem o saldo da conta origem (que vai depositar) nem da conta destino, que vai receber.