1
resposta

Metodo getBonificacao() da classe Funcionario

Ao final desta aula me deparei com uma dúvida. Digamos que meu requisito peça para informar dois valores sendo: 1) A bonificação de um objeto da classe gerente implementado pelo método getBonificacao(); conforme foi feito no exercício e 2) Exibir o valor do método getBonificacao(); da classe funcionário. Como posso apresentar o segundo valor? Tentei conforme abaixo porém não compila: System.out.println(g1.super.getBonificacao()); Obrigada!

1 resposta

Olá Isis.

O método getBonificacao() chamado depende do tipo da instância de objeto que você está utilizando.

Ex:

Funcionario g = new Gerente();
Funcionario f = new Funcionario();

g.getBonificacao(); // irá chamar o da classe gerente
f.getBonificacao(); // irá chamar o da classe funcionário

Uma vez que o método foi sobrescrito pela classe Gerente, toda chamada a ele por uma instância de Gerente irá chamar a versão sobrescrita. Pra você chamar a versão de funcionário, somente utilizando uma instância de Funcionario.

Esse super que você fez não funciona. Só é possível utilizá-lo dentro da classe Gerente. Ex:

getBonificacao() {
    super.getBonificacao();
    // faz outras coisas no método....
}

Nesse caso, você está chamando o método da classe pai dentro do método sobrescrito da classe filha.