Boa noite. Eu fiz desta forma.
A classe OperacaoFuncionario tem o comportamento de receber a coleção pelo construtor e exibir o nome e salário do funcionário através da iteração. E na classe do Gerente coloquei a comissão em valor real e não em porcentagem como vc informou.
``
Classa Abstrata:
`public abstract class FuncionarioAbstract {
private String nome;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public abstract double getSalario();
}`
Classe Administrador:
`public class Adminstrador extends FuncionarioAbstract{
private double salario;
public Adminstrador() {
this.salario = 2000;
}
@Override
public double getSalario() {
return this.salario;
}
}`
Classe Gerente:
`public class Gerente extends FuncionarioAbstract {
private double salario;
private double comissao;
public Gerente(double comissao) {
this.comissao = comissao;
this.salario = 2500;
}
@Override
public double getSalario() {
return this.salario + this.comissao;
}
}
`
Classe OperacaoFuncionario:
`public class OperacaoFuncionario {
private Set<FuncionarioAbstract> funcionario;
public OperacaoFuncionario(Set<FuncionarioAbstract> fun) {
this.funcionario = fun;
}
public Set<FuncionarioAbstract> getFuncionario() {
return funcionario;
}
public void exibirDetalhes(){
for (FuncionarioAbstract fun : funcionario) {
System.out.println("Nome do funcionário: " + fun.getNome() + ". Salário: " + fun.getSalario());
}
}
}`
Classe Teste:
`public class OperacaoFuncionarioTest {
public static void main(String[] args) {
Adminstrador adminstrador1 = new Adminstrador();
adminstrador1.setNome("Mihael");
Adminstrador adminstrador2 = new Adminstrador();
adminstrador2.setNome("Amanda");
Gerente gerente1 = new Gerente(500);
gerente1.setNome("Renan Melo");
Gerente gerente2 = new Gerente(1000);
gerente2.setNome("Rodrigo Melo");
Set<FuncionarioAbstract> funcionario = new HashSet<>(Arrays.asList(adminstrador1, adminstrador2
, gerente1, gerente2));
OperacaoFuncionario operacaoFuncionario = new OperacaoFuncionario(funcionario);
operacaoFuncionario.exibirDetalhes();
}
}`