public class SistemaInterno {
    private int senha = 2222;
    public void autentica(FuncionarioAutenticavel fa) { // foi criado mas não consegue chamar ele na classe TesteSistema
        boolean autenticou = fa.autentica(this.senha);
        if(autenticou) {
            System.out.println("Entrada foi altorizada");
        }else {
            System.out.println("Não pode entrar no sistema");
        }
    }
}
**************************************************************************
public class TesteSistema {
    public static void main(String[] args) {
        Gerente g  =  new Gerente();
        g.setSenha(2222);
        SistemaInterno si = new SistemaInterno();
        si.autentica(fa); //com erro, nao consegue achar o autenticavel fa, mas 
    }
}
**************************************************************************
public abstract interface Autenticavel {
    public abstract void setSenha(int senha);
    public abstract boolean autentica(int senha); 
}
**************************************************************************
public class Cliente implements Autenticavel{
    private int senha;
    @Override
    public void setSenha(int senha) {
        this.senha = senha;
    }
    @Override
    public boolean autentica(int senha) {
        if(this.senha == senha) {
            return true;
        } else {
            return false;
        }        
    }
}
*************************************************************************
public abstract class Funcionario {
    private String nome;
    private String cpf;
    private double salario; /*Puclico para os filhos */
    //Método sem corpo, não há implementação    
    public abstract double getBonificacao();
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public double getSalario() {
        return salario;
    }
    public void setSalario(double salario) {
        this.salario = salario;
    }
}
*************************************************************************
public abstract class  FuncionarioAutenticavel extends Funcionario {
    private int senha;
    public void setSenha(int senha) {
        this.senha = senha;
    }
    public boolean autentica(int senha) {
        if(this.senha== senha) {
            return true;
        }else {
            return false;
        }
    }
}o meu codigo esta dando errado , na classe TesteSistema
SistemaInterno si = new SistemaInterno();
        si.autentica(fa); //Não consegue acharPro favor não estou vendo onde esta o meu erro
Obrigado!