Apenas para ter certeza que o raciocínio é comparável.
Funcionario f = new Gerente();
f.autentica(1234);O trecho de código acima não funciona assim como o seguinte abaixo não funcionaria
JogadorDeFutebol buffon = new Goleiro();
pegaBolaComAMao();porque goleiro é um tipo específico de jogador, mas nem todo jogador de futebol é goleiro, podendo pegar a bola com a mão. Logo, isso quer dizer que, em Java, o método vai ser buscado no marcador de tipo da variável. É isso?