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;
}
}