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

Sobrecarga como evitar a duplicidade de código

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

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

Eu consigo chamar o método que somente valida a senha para evitar duplicar o código igual ocorre com um construtor?

2 respostas
solução!

Boa noite Sergio,

Primeiramente existe um problema de compilação no seu código.

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

        // ESSE TRECHO NUNCA SERÁ ACESSADO
        if (this.senha == senha) {
            return true;
        } else {
            return false;
        }
    }

Se você observar bem o segundo if/else nunca será executado, porque você tem uma condição if/else antes e obrigatoriamente terá um retorno antes da execução chegar no segundo.

Dito isso, é possível sim realizar o que você está perguntando chamando a primeira assinatura do método autentica dentro do escopo do segundo da seguinte maneira:

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

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

    }

Espero ter ajudado.

Danilo! pelas duas interações resolvendo o problema de lógicas (rs) e por esclarecer minha dúvida, muito obrigado!