2
respostas

No meu código das classes Autenticaveis, que são o gerente, o administrador e o cliente, o código não compila se for usada a anotação @Override

A mensagem do Eclipse: The method setSenha(int) of type Cliente must override a superclass method

1 quick fix available: Remove '@Override' Annotation

Alguém sabe alguma possível causa?

2 respostas

Micael, isso acontece quando o metodo sobrescrito nao tem a assinatura exatamente igual da classe mãe

Código da Interface Autenticavel:

public interface Autenticavel {

    public void setSenha(int senha);
    public boolean autentica(int senha);
}

Código do Administrador, um dos que dá problema:

public class Administrador extends Funcionario implements Autenticavel {

    private AutenticacaoUtil autenticador;

    public Administrador() {
        this.autenticador = new AutenticacaoUtil();
    }


    @Override
    public double getBonificacao() {
        // TODO Auto-generated method stub
        return 0;
    }


    @Override
    public void setSenha(int senha) {
        this.autenticador.setSenha(senha);
    }

    @Override
    public boolean autentica(int senha) {
        return this.autenticador.autentica(senha);
    }    
}

Se remover a anotação @Override dos metodos setSenha e autentica ele volta a compilar. Não sei onde está o erro, :(