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

Erro na classe TesteSistema

Olá,

Fiz um teste dentro da classe TesteSistema, e está acontecendo um erro. Coloquei a senha do Adminstrador como 2222 (assim como no Gerente), conforme o código abaixo:

public class TesteSistema {

    public static void main(String[] args) {

        Gerente g = new Gerente();
        g.setSenha(2222);

        Administrador a = new Administrador();
        a.setSenha(2222);

        SistemaInterno si = new SistemaInterno();
        si.autentica(g);
        si.autentica(a);

    }

}

E vejam também como está minha classe SistemaInterno:

public class SistemaInterno {

    private int senha = 2222;

    public void autentica(FuncionarioAutenticavel fa) {
        boolean autenticou = fa.autentica(this.senha);
        if (autenticou) {
            System.out.println("Pode entrar no sistema!");
        } else {
            System.out.println("Não pode entrar no sistema!");
        }
    }

}

No entanto, na hora de compilar, aparece a seguinte saída:

Pode entrar no sistema!
Não pode entrar no sistema!

Por que o print da autenticação do administrador está desta forma, sendo que eu também coloquei a senha como 2222?

7 respostas

Oi Rafael tudo bem?

Poderia por gentileza colocar a pasta do seu projeto no github. Assim podemos analisar melhor o que está acontecendo.

Nunca mexi no Github... Como faço isso? rs

Como criar um repositório e subir arquivos no Github sem precisar de linha de comando nem nada. (Porque se pesquisar no google vão querer que você saia dando comandos rsrsrs).

Primeiro de tudo crie uma conta no Github e logue nela. E vá seguindos os passos em azul. Alguma dúvida é só me perguntar. Clique no botão verde New ou arraste os arquivos se não estiver pegando bem a estrutura de pastas pegue a url que está aparecendo na barra de url

Segue: https://github.com/rafaelmello082/rafaelmello082

solução!

Na classe Administrador.java


public class Administrador extends FuncionarioAutenticavel {

    private int senha;

    public void setSenha(int senha) {
        this.senha = senha;
    }

    // @Override
    public double getBonificacao() {
        return 50;
    }

}

O método setSenha estava sobrescrevendo o método do FuncionarioAutenticavel

E aqui

 public void autentica(FuncionarioAutenticavel fa) {
        boolean autenticou = fa.autentica(this.senha);
        if (autenticou) {
            System.out.println("Pode entrar no sistema!");
        } else {
            System.out.println("Não pode entrar no sistema!");
        }
    }

ele espera receber as senha do FuncionarioAutenticavel e não a senha do Administrador.

Por isso não funcionou. Tem que apagar o

public void setSenha(int senha) {
        this.senha = senha;
    }

da classe Administrador.

Aí o código funciona como esperado.

Espero ter ajudado!!!

Olá, boa noite, desculpa a demora em responder, rs

Agora eu entendi!

Muito obrigado! Um abraço!

Disponha e bons estudos!!

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