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

Erro no nome da classe que é herdada da classe funcionário

Classe do Funcionário


public class Funcionario {
    private String nome;
    private String cargo;
    private String endereco;
    private String cpf;
    private int numero;
    private int agencia;
    private double salario;
    private double bonificacao;

    public Funcionario(String nome, String cargo, String cpf, int numero, int agencia, double salario) {
        this.nome = nome;
        this.cargo = cargo;
        this.cpf = cpf;
        this.numero = numero;
        this.agencia = agencia;
        this.salario = salario;
        System.out.println(getNome() + " cadastrado no sistema.");
        return;
    }

    public double getBonificacao() {
        return bonificacao;
    }

    public void setBonificacao(double bonificacao) {
        this.bonificacao = bonificacao;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        if (numero > 0) {
            this.numero = numero;
        }
        System.out.println("Número Inválido.");
    }

    public void setAgencia(int agencia) {
        if (agencia > 0) {
            this.agencia = agencia;
        }
        System.out.println("Agência Inválida.");
    }

    public double getSalario() {
        return salario;
    }

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

Essa é a classe do Diretor Executivo

public class DiretorExecutivo extends Funcionario {

    private double bonificação;
    private String senha;

    public DiretorExecutivo(String nome, String cargo, String cpf, int numero, int agencia, double salario) {
        super(nome, cargo, cpf, numero, agencia, salario);
    }

    @Override
    public double getBonificacao() {
        return super.getSalario() * 1.15;
    }

    public String getSenha() {
        return senha;
    }

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

    public boolean autentica(String senha) {
        if (this.senha == senha) {
            System.out.println("Você logou no sistema.");
            return true;
        }
            System.out.println(" Senha Incorreta.");
            return false;
    }

Lendo outras perguntas no fórum, entendi que a correção do meu problema é essa linha:

public DiretorExecutivo(String nome, String cargo, String cpf, int numero, int agencia, double salario) {
        super(nome, cargo, cpf, numero, agencia, salario);
    }

Entretanto o que não entra na minha cabeça é pq eu tenho que meio que repetir essas 2 linhas se a classe já é herdada... Pelo o que tinha entendido, eu só necessitaria fazer isso caso houvesse algum atributo específico do Gerente. Caso alguém consiga me explicar o porquê, ficarei muito grato.

3 respostas
solução!

Oi Lucas

A classe DiretorExecutivo herda de Funcionario mas quando você instancia um DiretorExecutivo você passa via construtor os atributos da classe pai via "super" (que é a chamada do construtor da classe pai).

Entendi, então no caso eu inicio instanciando as informações necessárias e logo abaixo já chamo a classe Pai, correto?

Isso mesmo Lucas :)