Boa tarde, vim compartilhar como eu fiz meu programa, espero que tenha ficado bom :)
public abstract class Funcionario {
private String nome;
private String cpf;
private Double salario;
public abstract Double getBonificacao();
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public void setSalario(Double salario) {
this.salario = salario;
}
public Double getSalario() {
return salario;
}
}
public class Gerente extends Funcionario{
private String senha;
public boolean autentica(String senha) {
return this.senha == senha;
}
public Double getBonificacao() {
return getSalario();
}
}
public class EditorVideo extends Funcionario {
@Override
public Double getBonificacao() {
return getSalario() * 0.5;
}
}
public class Design extends Funcionario {
@Override
public Double getBonificacao() {
return 3000.00;
}
}
public class ControleBonificação {
private static double somaBonificacao;
public void registraBonificacao(Funcionario f) {
somaBonificacao += f.getBonificacao();
}
public double getSomaBonificacao() {
return somaBonificacao;
}
}
public static void main(String[] args) {
Design desing = new Design();
desing.setNome("Mikael");
desing.setCpf("8764539822");
desing.setSalario(2000.00);
EditorVideo ed = new EditorVideo();
ed.setNome("Ze");
ed.setCpf("8764539822");
ed.setSalario(4000.00);
Gerente gerente1 = new Gerente();
gerente1.setNome("Maria");
gerente1.setCpf("8764539822");
gerente1.setSalario(2000.00);
gerente1.geraSenha("test");
ControleBonificação cb = new ControleBonificação();
cb.registraBonificacao(desing);
cb.registraBonificacao(ed);
cb.registraBonificacao(gerente1);
//System.out.println(cb.getSomaBonificacao());
System.out.println(desing.getBonificacao());
System.out.println(gerente1.getBonificacao());
System.out.println(ed.getBonificacao());
System.out.println("--------");
System.out.println(desing.getBonificacao() + gerente1.getBonificacao() + ed.getBonificacao());
}
Resultado no terminal: 3000.0 2000.0 2000.0
7000.0