Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro no Código

Na classe TesteGerente, instanciei um objeto Gerente e a referencia do tipo Autenticavel e ocorre o erro de que os metodos não são definido do tipo Autenticavel, porém a classe Gerente está definida como Gerente extends Funcionario implements Autenticavel.

Segue o código.

public abstract class Funcionario {

    private String nome;
    private String cpf;
    private double salario;

    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 interface Autenticavel{

    public void setSenha(int senha);

    public boolean autentica(int senha);

}


public class Gerente extends Funcionario implements Autenticavel{

    private int senha;

    public double getBonificacao() {
        System.out.println("Chamando o metodo de bonificacao do GERENTE");
        return super.getSalario();
    }

    @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 class TesteGerente {

    public static void main(String[] args) {

        Autenticavel g1 = new Gerente();
        g1.setNome("Marco");
        g1.setCpf("235568413");
        g1.setSalario(5000.0);

        System.out.println(g1.getNome());
        System.out.println(g1.getCpf());
        System.out.println(g1.getSalario());

        g1.setSenha(2222);
        boolean autenticou = g1.autentica(2222);

        System.out.println(autenticou);

        System.out.println(g1.getBonificacao());
    }

}
3 respostas
solução!

Boa tarde, Daniel! Como vai?

Os erros acontecem em linhas como essas, certo?

g1.setNome("Marco");
g1.setCpf("235568413");
g1.setSalario(5000.0);

Se sim, o que está acontecendo é que a sua referência g1 é do tipo Autenticavel, só que essa interface não tem os métodos setNome(), setCpf() e nem setSalario()! Por isso acontece esse problema!

Pra resolver isso vc terá que fazer Gerente g1 em vez de Autenticavel g1!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Gabriel, Boa tarde!

Era referente a esses métodos.

Agora eu entendi melhor a referência, é como se ela estivesse apontando para classe que eu vou utilizar.

Obrigado pela ajuda.

Por nada, Daniel! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software