4
respostas

Qual alterei de protected para private o super.getSalario não funcionou

public class Gerente 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;
        }
    }


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

Oi Felipe,

Quando você declara métodos como private, eles não podem ser acessados ou usados por nenhuma outra classe. A única classe que tem acesso ao método é a própria classe que o define, ou seja, se a classe Funcionario declara um método getSalario() privado, somente a classe Funcionario terá acesso a ele.

Valeu Otávio, mas no módulo herança da formação Java o instrutor de isso aí e funcionou, vou rever umas aulas anteriores e ver se não perdi nada rsrsrsrs. De qualquer forma muito obrigado pela atenção.

O que acontece é o seguinte qdo eu coloco super.getSalario(); a IDE me fala pra eu criar o metodo getSalario na classe Funcionario sendo que ja existe o get

public class Funcionario {
    private String nome;
    private String cpf;
    private double salario;


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


    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(double v) {
        return salario;
    }

    public void setSalario(double salario) {
        this.salario = salario;
    }
}

Olá,

verifique se o erro que está ocorrendo não seja porque você está chamando super.getSalario(). Ou seja, o método sem parâmetros.

Pelo que vi na sua classe, o método está declarado assim: public double getSalario(double v). Ou seja, seu método declara um parâmetro double v.

Desta forma, quando você nas classes filhas chama por getSalario(), sem o argumento, o método não é reconhecido na herança.

Luciano

Caso este post tenha te ajudado, por favor, marcar como solucionado. 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