Espero que a forma que fiz tenha ficado claro, foi apenas um teste.
public class Gerente extends Funcionario {
private int senha;
public Gerente() {
this.senha = 2222;
}
/*A sobrecarga não leva em conta a visibilidade ou o tipo de retorno do método,
apenas os parâmetros e não depende da herança.*/
public boolean autentica(int senha) {
if (this.senha == senha) {
return true;
} else {
return false;
}
}
public String autentica(String login, int senha) {
if (login.equals("alura") && this.senha == senha) {
return "Autorizado: " + super.getNome();
} else {
return "Nao autorizado";
}
}
protected int autentica(String login, String descricao) {
if(login.equals("alura") && descricao.equals("Gerente")) {
return 1;
}else {
return 0;
}
}
/* sobrescrita depende de uma classe mae */
public double getBonificacao() {
return super.getBonificacao() + super.getSalario();
}
}
public class TesteGerente {
public static void main(String[] args) {
Gerente g1 = new Gerente();
g1.setNome("Dr.d");
g1.setCpf("22222");
g1.setSalario(5000.0);
//System.out.println(g1.getNome() + " autorizado: " + g1.autentica(222) + "\nbonificacao: " + g1.getBonificacao());
System.out.println(g1.autentica("alura", 2222));
System.out.println(g1.autentica("alura", "Gerente"));
}
}
Saída no console:
Autorizado: Dr.d 1