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