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

Usei o super conforme o hands on e minha bonificação está zerada

Olá tudo bem? Estou na aula de super e alterei o Gerente.java para ter o getBonificacao(). Porém o resultado é de que no console o comando sysout mostra bonificação zerada.

public double getBonificacao() {
        return this.salario * 0.1;
    }

Este é a super classe Funcionário.Java.

Agora na classe Gerente.java, ficou assim:

public double getBonificacao() {
        return super.getBonificacao() + super.getSalario();
    }

Na classe testaGerente.java.

public static void main(String[] args) {

            Gerente 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.autenticaSenha(2222);

            System.out.println(autenticou);

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

        }

    }

Assim quando imprimo :

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

Ele retorna 0.0

Onde eu errei?

Desde já agradeço atenção.

7 respostas

Boa tarde Paulo Henrique. Na função no Gerente.java:

public double getBonificacao() {
        return super.getBonificacao() + super.getSalario();
    }

Você está pegando o salário da super classe Funcionario.java onde não tem iniciado o valor do salário. Tente trocar o "super.getSalario()" por "this.getSalario()";

Você pode colar as classes completas? Funcionario e Gerente? Porque só se tiver algo nos seus métodos set() ou construtores que estão mudando os valores, aparentemente era para imprimir 5.500,00

Boa tarde, Paulo! Como vai?

Vc poderia colar aqui integralmente as suas classes Funcionario e Gerente? Assim eu poderei dar uma olhada melhor pra poder te ajudar!

Luan Mello da Silva, acredito que não, o salário é do funcionário, todos os funcionários tem um salário. A subclasse Gerente herda o salário de Funcionário.

Ola colegas do fórum, obrigado pelas respostas, desculpem a falha em não postar as classes funcionario e gerente. aqui vai agora as duas:

Gerente.java


public class Gerente extends Funcionario{

    private String nome;
    private String cpf;
    private double salario;
    private int senha;


    public double getBonificacao() {
        return super.getBonificacao() + super.getSalario();
    }

    public boolean autenticaSenha(int senha) {
        if (this.senha == senha) {    
            return true; 
        } else {
            return false;
        }
    }

    public int getSenha() {
        return senha;
    }

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

    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;
    }

}

Funcionario.java


public class Funcionario {

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

    public double getBonificacao() {
        return this.salario * 0.1;
    }

    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;
    }



}
solução!

Olá Paulo,

Na classe Gerente.java você não precisa declarar os atributos e nem os métodos getters e setters que já existem na classe Funcionario. Os únicos métodos na classe Gerente são o autentica() e o getBonficacao() reescrito e o único atributo a se declarar na classe Gerente é o private int senha.

Obrigado a todos que ajudaram na solução do tópico, acabei entendendo como funciona pelas explicações de vocês. Muito obrigado a todos de coração.