Se voce tivesse feito esses vários IFs dentro de getBonus() estaria violando o princípio OCP, correto ?
Mas como vc criou várias classes ( todas herdando de funcionário ) como Gerente etc então não há violação.
Aliás, indo um pouco mais além, dá até pra injetar tais novas subclasses, correto ?
Obrigado!