Yo tenía la misma pregunta, que bueno que la encontré aquí antes de abrir un nuevo tema.
Complementando la duda, al final, Funcionario Autenticable se cambia el nombre a Autenticable, debido a que será una clase utilizada por Gerente y Administrador, que son clases que extienden de Funcionario pero también la usará cliente, que es totalmente independiente de la clase Funcionario y derivados.
Ahora, creo/sospecho que es porque al ser una interface, ésta no puede tener un algoritmo en sus métodos, solo puede escribir el método para que las clases que usen implement de éste, se vean obligados a hacer override y especificar su propio algoritmo.
Ahora, de ahi salen mas dudas, que vaya que me ha costado entender, pero te explico a ver si te sirve:
El SistemaInterno solicita un método de la interface Autenticable (lo cual es válido porque sus métodos son públicos y hasta ahora sabemos que cualquier clase puede llamar a esos métodos publicos siempre y cuando pertenezcan al mismo proyecto(Byte-Bank)). Luego, Autenticable, tiene una relación con las clases Gerente, Admin y Cliente, gracias a su implements, al sobreescribir los métodos login y setClave (son los nombres que yo les puse pero se entiente, es setContraseña y creo que IniciarSesion), estos especifican sus acciones y devuelven un resultado que proviene directamente con las clases que necesitan ser autenticables (Gerente, Admin y Cliente), entonces esos datos pasan de un método a otro sin romper ninguna regla y asi el SistemaInterno, que no tiene nada que ver con las clases dichas, logra obtener información, por medio de la interface.
Eso es polimorfismo.
Perdona si me extendí, sé que puede ser un poco dificil de entender al inicio pero si lees dos o tres veces el texto, a lo mejor lo entiendas, igual intenté explicarlo lo mas claro posible pero acabo de entenderlo todo hace 20 min.