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