Não sei se entendi muito bem sobre herança.
1º dúvida: Todos os atributos e métodos que estão definidos na superclasse estarão na subclasse correto?
2º dúvida: Quando escrevemos
Funcionario funcionario = new Diretor();
o que essa linha quer dizer? Estamos atribuindo uma referência de Diretor num tipo Funcionario? O que isso quer dizer? O tipo de dado Funcionario representa a classe Funcionario que contém as informações como: nome, cpf, salario, e o método de bonificação correto? O que a referência de Diretor implica? Que a impletamentação do método tem será a da classe Diretor?