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

Aula 2 Super e reescrita de métodos - ativiade:Para saber mais: Sobrecarga

Na atividade "Para saber mais: Sobrecarga", o código está com 2 métodos com mesmo nome "autentica". Numa mesma classe pode haver mais de 1 método com mesmo nome?

2 respostas
solução!

Oi Peter, tudo bem?

Pode sim! O que não pode, é ter dois métodos com a mesma assinatura, ou seja, quando o modificador de acesso, o retorno, o nome e os parâmetros recebidos forem todos iguais.

Nesse caso foi possível, pois o segundo método autentica() recebe dois parâmetros (String login, int senha), enquanto o primeiro autentica() recebe apenas um parâmetro (int senha):

    public boolean autentica(int senha) {
        if(this.senha == senha) {
            return true;
        } else {
            return false;
        }
    }

    //novo método, recebendo dois params
    public boolean autentica(String login, int senha) {
        //implementacao omitida
    }

E essa é justamente a motivação da sobrecarga! Ter esses dois métodos autentica(), abre mais oportunidades para implementarmos novos comportamentos chamando o "mesmo" método, porém com parâmetros diferentes. Então, caso chamarmos o autentica() passando apenas um inteiro (senha) como parâmetro, invocaremos o primeiro método, public boolean autentica(int senha). Agora, se chamarmos o autentica() passando dois parâmetros, sendo eles uma String e um inteiro (login e senha), invocaremos o segundo método, public boolean autentica(String login, int senha).

Espero ter ajudado, se ficou qualquer dúvida é só avisar!

Bons estudos!!

Olá. Entendi a explicação. Muito obrigado.