Pelo o que aprendemos nos vídeos passamos, se queremos uma variável a nível de classe, ou seja, que valha para todas as instâncias de um objeto, devemos criar atributos do tipo static. Na classe que fizemos em aula o atributo soma não foi declarado como static, porém foi efetivo na soma de bonificações. Fiquei na dúvida porque se funcionou, então o conceito de ser necessário atributo do tipo static para que valha para todas as instâncias de um objeto perde o sentido. Seque o código da Classe bonificação:
public class ControleBonificacao {
private double soma;
public void Registra(Funcionario f) {
    this.soma = this.soma + f.getBonificacao();
}
public double getSoma() {Abaixo segue as classes que à chamam:
public class TestaBonificacao {
public static void main(String[] args) {
    Funcionario f1 = new Funcionario();
    EditorDeVideo ev1 = new EditorDeVideo();
    Gerente g1 = new Gerente();
    f1.setNome("Francisco");
    f1.setSalario(2000);
    ev1.setNome("Marcio");
    ev1.setSalario(2500);
    g1.setNome("Thiago");
    g1.setSalario(5000);
    ControleBonificacao controleBonificacao = new ControleBonificacao();
    controleBonificacao.Registra(f1);
    controleBonificacao.Registra(ev1);
    controleBonificacao.Registra(g1);
    System.out.println(controleBonificacao.getSoma());
}}
    return this.soma;
}}
 
            