Para reforçar os conceitos:
É correto afirmar que o polimorfismo funciona apenas por causa da questão de herança, ou seja, no momento que estendemos a classe Funcionario para a classe Gerente podemos alterar uma referencia mais genérica? Funcionario f = new Gerente();
Além disso, seria correto afirmar que quando realizamos a extensão de uma Classe para outra, na realidade o que acabamos fazendo é que a Classe filha assuma todos os atributos e métodos da classe mão, além de seus próprios atributos e métodos?
Ainda, através do polimorfismo fazemos um objeto acessar os atributos e métodos em comum obtidos a partir da herança?