Hola, primero, no se puede crear un Gerente Jose = new Funcionario(); porque si bien gerente es un funcionario, no todo funcionario va a ser un gerente en tal caso si deseas crear un Gerente a partir de la clase Funcionario sería: Funcionario Jose = new Gerente(); porque gerente puede ser un Funcionario.
Además no puedes llamar los métodos que hayas definido en Gerente de esta forma porque al momento de crearlo de la clase Funcionario haces referencia únicamente a los métodos de la clase Funcionario, esto hace que no se incluyan los métodos de la clase Gerente.
Una diferencia entre Funcionario Jose = new Gerente(); y Funcionario Jose = new Funcionario(); Es que creas un nuevo gerente pero haciendo referencia a la clase funcionario por lo que no vas a tener acceso a los métodos de Gerente, y en el otro caso se crea un funcionario con todas sus características ya que se hace referencia a la clase Funcionario, por lo tanto va a tener todos los métodos pertenecientes a ese objeto.