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

Herança de 2º grau

Ola galera, tenho uma classe "Funcionário", uma "Gerente" que herda de "Funcionario" e uma "OperadorCaixa" que herda de "Gerente" como no código abaixo.

public class Funcionario {

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


    public double getBonificacao(){
        return this.salario * 0.1;
    }
}
public class Gerente extends Funcionario{

    private String senha;

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

public class OperadorCaixa extends Gerente {

    @Override
    public double getBonificacao() {
        return super.getBonificacao() + 550.54;
    }

    // Outros metodos
}

No método "getBonificacao" da classe "OperadorCaixa" eu chamo método "super.getBonificacao" e essa chamada está acessando o método da classe "Gerente", qual seria a forma correta para acessar o método "getBonificacao " da classe "Funcionario"?

2 respostas
solução!

Oi Thiago!

O super vai sempre chamar o método da classe que você está herdando.

A única forma de conseguir executar o getBonificacao() do Funcionario seria colocando uma chamada ao super.getBonificacao() no Gerente:


public class Funcionario {

    // atributos

    public double getBonificacao(){
        return this.salario * 0.1;
    }
}
public class Gerente extends Funcionario{

    private String senha;

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

public class OperadorCaixa extends Gerente {

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

    // Outros metodos
}

Assim o OperadorCaixa chama o getBonificacao() do Gerente, que por sua vez chama o getBonificacao() do Funcionario.

Faz sentido? Abraço!

Faz sim obrigado