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.
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.