Solucionado (ver solução)

Importante

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!

Solucionado
(ver solução)
1
resposta

Duvida Polimorfismo

No caso abaixo, apesar da ref. ser Funcionário o objeto não é do tipo gerente? Sendo assim o Gerente tem o método invocado e deveria compilar normalmente?

Funcionario f = new Gerente();
f.autentica(1234);
1 resposta
solução!

Faz sentido, Diego, porém vamos dar uma olhada na estrutura criada:

class Funcionario {
    // metodos do funcionario
}
class Gerente extends Funcionario {

    public void autentica(int valor) {
        //....
    } 

    //Outros métodos exclusivos do gerente
}

Ao fazermos...

Funcionario f = new Gerente();
f.autentica(1234);

... o compilador vai "toscamente" olhar a linha f.autentica(1234) para responder a seguinte pergunta:

"O tipo da referência f (classe Funcionario) possui o método autentica que é público e recebe um parâmetro inteiro?"

Como essa pergunta possui uma resposta negativa (afinal de contas, o método não está no tipo Funcionario) há um erro de compilação.

Então, respondendo sua pergunta inicial:

"apesar da ref. ser Funcionário o objeto não é do tipo gerente?"

Sim. O objeto é do tipo Gerente, porém ao chegar na linha abaixo, o compilador verificará que referência f não possui o método chamado, disparando um erro.

Abraço!