2
respostas

Estou tentando modificar o construtor na minha classe filha e estou me deparando com um erro no construtor da classe filha.

A classe funcionario está assim:

public class Funcionario {

    private String nome;
    private String CPF;
    protected double salario;

    public Funcionario(double salario, String CPF, String nome) {  
        this.salario = salario;
        this.nome = nome;
        this.CPF = CPF;
    }
    //...
    }

a classe gerente está assim:, com um erro na linha do "super(salario);" , o que eu estou fazendo errado ?

public class Gerente extends Funcionario {

    private int senha;

    public Gerente(double salario, int senha) {
        super(salario);
        this.senha = senha;
    }
    //...
    }
2 respostas

Olá Lucas, tudo bem?

O super é semelhante ao this, porém ele faz referência a uma classe Mãe.

Quando você colocou Gerente extends Funcionario, isso significa que Funcionario é a classe filha, e Gerente é a classe Mãe.

Logo, para você acessar os métodos da classe atual Funcionario você usa o this. Para acessar os métodos da classe Mãe Gerente você usa o super.

Se você quer acessar o atributo salario que está na classe Mãe, você usa super.salario

Esse erro está acontecendo porque foi passado o super(salario). Você precisa colocar como super.salario.

Espero ter ajudado. Forte abraço e bons estudos!

Eu testei colocar o super.salario dentro do construtor mas não consegui, continua dando erro, a única forma com que que eu fiz fazer rodar foi a seguinte:

public class Gerente extends Funcionario {

    private int senha;

    public Gerente(String nome, String CPF, double salario, int senha) {
        super(nome, CPF, salario);
        this.senha = senha;
    }     
    //...
    }

Está errado desta forma ?