Em geral as aulas do Alura são muito boas mas essa aula de interface está um pouco complicada. Essa técnica de mostrar o que não deve ser feito para depois mostrar como deve ser feito atrapalhou um pouco.
Minha maior dúvida foi dentro de Sistema Interno, essa classe possui um método (Logar) com parâmetro para uma Interface (IAutenticavel funcionário). Porém o Programa.cs manda o objeto Diretor (roberta) inteiro como argumento para o parâmetro desse método.
Isso significa que Sistema Interno descarta todo os outros elementos do objeto Diretor Roberta ficando apenas com a parte do objeto delimitada pela interface? (Isso pode, Arnaldo????)
Se não, se a interface não implementa nenhum método e o método Logar da classe Sistema Interno está recebendo somente a interface do objeto, em que momento o computador vai saber que a lógica:
return Senha == senha;
foi implementada dentro do método Autenticar da classe abstrata FuncionárioAutenticável?