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

Polimorfismo

Boa noite. Não entendi porque ao chamar um método sobrescrito o compilador sabe que estou chamando o método da classe filha e ao chamar um método exclusivo não.

Exemplo:

Funcionario gerente = new Gerente("João da Silva", "798.565.141.76", 5000, 123456);

System.out.println(gerente.autentica(123456, "augustocastro")); // error

2 respostas
solução!

Augusto, na verdade o compilador só olha o tipo da variável, então o compilador só deixa chamar os métodos de Funcionario. Agora em tempo de execução, a jvm sabe que é um Gerente, ou um Diretor e executa o método da classe filha

Olá Augusto! Troque a referência para Gerente (classe filha). Como o Guilherme citou, o compilador olha a referência, e em Funcionário (classe mãe) não tem o método autentica(). Lembrando que as classes filhas herdam os métodos da classe mãe, mas, o contrário não acontece. Fica assim:

Gerente gerente = new Gerente("João da Silva", "798.565.141.76", 5000, 123456);