Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

this.saca() da classe Conta chamando this.saca() da classe contaCorrente

Método da classe Conta

 public boolean transfere(double valor, Conta destino) {
        if(this.saca(valor)) {
            System.out.println("feito deposito!");
            destino.deposita(valor);
            return true;
        }
        return false;
    }

Boa noite! Fiquei na dúvida pq no método transfere da classe Conta foi feito um if e passado this.saca(), porém está chamado o método da classe ContaCorrente. Se a palavra reservada "this" é para nos referirmos aos atributos e métodos na própria classe, como está chamando método da sub classe?

Método da classe ContaCorrente

@Override
    public boolean saca(double valor) {
        double valorASacar = valor + 0.2;
        return super.saca(valorASacar);
    }

Abraço e valeu!

2 respostas
solução!

Então, no caso o this é para referir a instancia, se a instancia for ContaCorrente, por ser filha de Conta, ela também tem os métodos da classe mãe.

Nesse caso de uma instancia de ContaCorrente, você está chamando o método transfere da classe ContaCorrente, que não sofreu override, por isso é igual ao método transfere da classe Conta . E esse método transfere, por sua vez, chama o método saca da própria classe ContaCorrente.

No caso do saca você ta dando override no método saca e então chamando o saca da classe mãe com o super.saca, adicionando uma taxa extra.

Espero que tenha ajudado. :)

Opa! Bom dia! Valeu zappaftw ajudou muito.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software