Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida polimorfismo

Segundo o vídeo, quando chamamos um método que foi reescrito na classe filha, esse método busca o mais específico, mas fazendo um teste com o método "saca", na classe ContaCorrente, ele acessa tanto o "saca" da classe Conta como o da classe ContaCorrente, não entendi a razão do mesmo, usei o system out para confirmar isso.

saca na clase Conta

public boolean saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            System.out.println("saca conta");
            return true;
        } else {
            return false;
        }
    }

saca na classe ContaCorrente

@Override
    public boolean saca(double valor) {
        System.out.println("saca cc");
        return super.saca(valor + 0.2);
    }

código no main

public static void main(String[] args) {
        ContaCorrente cc = new ContaCorrente(111, 111);
        cc.deposita(100);
        ContaPoupanca cp = new ContaPoupanca(222, 222);

        cc.transfere(50, cp);

    }

Resultado no console

saca cc

saca conta

1 resposta
solução!

Oie Camila, tudo bem contigo?

Isso aconteceu, pois no método saca da "ContaCorrente" que foi sobrescrito você chamou a palavra chave super(), e o super sempre se referência ao conteúdo existente na classe pai, por isso quando você fez super.saca() você está chamando o método saca da classe pai. Então, quando você executou o programa, ele rodou o método saca da classe "ContaCorrente" e depois através do super, rodou o saca da classe "Conta". Ficou mais claro agora?

Se tiver qualquer outra dúvida é só mandar por aqui :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!