Seguindo o código:
http://codepaste.net/2qw1qs
Estou com dúvida no porque eles colocaram a classe Employee como classe abstrata ?
Veja:
//método abstrato sobrescrito pelas subclasses
public abstract double earnings(); //nenhuma implementação aqui
O que é isso ?
E veja a classe PayrollSystemTest.
Porque colocaram como array ?
Se puder me explicar, eu agradeço.