No vídeo de exemplo na introdução ao polimorfismo, o método Autentica não funcionou por não estar presente na classe de funcionários, mas o método getBonificacao usou os comandos da classe de gerente e nao do funcionario.
Neste caso, o getBonificacao nao deveria usar do funcionario também? Ou por ter a mesma assinatura, ele usa do gerente?
//Exemplo de código que testei
public class TestaReferencias {
    public static void main(String[] args) {
        Funcionario g1 = new Gerente();
        g1.setNome("Marcos Silva");
        g1.setSalario(6000);
        //deu erro
        //g1.autentica(2222);
        System.out.println(g1.getNome());
        System.out.println(g1.getBonificacao());
    }
}