Orientação a objetos de array

Olá, eu sempre tive duvidas com arrays orientado a objetos, estou criando um projeto onde seria um controle de pagamento de funcionarios com polimorfismo, onde as classes (assalariados, comissionados, etc), são declaradas basicamente assim:

public class Assalariado extends Empregado{
private double extraHour;

public Assalariado(double extraHour, String nome, String sobrenome, int numeroIdentidade) {
    super(nome, sobrenome, numeroIdentidade);
    this.extraHour = extraHour;
}

@Override
public double getValorAPagar() {
    return ControlePagamento.SALARIO + (ControlePagamento.HORA*extraHour);
}

@Override
public String toString(){
return String.format(“O salário final do %s é R$ %f”, super.getNome(), this.getValorAPagar());
}}

--------------------------------------------------------. . . . ----------------------------------------------------

enquanto a classe de controle de pagamentos, é assim:

public class ControlePagamento {
public static final double SALARIO = 1212.0;
public static final double HORA = 30.0;
private Pagavel[] controlePagamento;
private int posicao;

public ControlePagamento(){
    this.controlePagamento = new Pagavel[10];
    this.posicao = 0;
}

public void adicionaItemPagavel(Pagavel item){
    if(posicao<10){
        controlePagamento[posicao] = item;
        posicao++;
    }
}

public double calculaValorAPagarContas(){
    double retorno = 0;
    
    for(Pagavel item : controlePagamento){
        if (item instanceof Conta){
            retorno = retorno + item.getValorAPagar();
        }
    }
    return retorno;
}

}

--------------------------------------------------------. . . . ----------------------------------------------------
Minha duvida seria como eu manipulo esse array de objetos pra guardar o SalarioAPagar de cada funcionario, e chamar o metodo calculaValorAPagarContas, para saber quanto devo pagar no total