Isso está de dentro da classe Funcionario
public abstract double getBonus();
public abstract double getTotal();
Na classe TestaFuncionario
Funcionario cc = new Gerente();
cc.setSalario(1000);
System.out.println(cc.getBonus());
Se ele se baseia pela variavel, porque nesse caso ele chama o getBonus emplementado na classe gerente ? Pela logica, devia retornar 0 , ou dar algum erro , já que o getBonus da classe Funcionario é abstrato e não retorna valor algum.