Il punto è un altro. Quale è il senso del void start(boolean isFirst) ?
Vedo che è un override, quindi potrebbe in teoria essere invocato "polimorficamente". Ci potrebbe essere un reference solo di tipo Player e chi invoca start potrebbe non sapere se l'oggetto è realmente un PippoPlayer piuttosto che un PlutoPlayer (per dire).

Poi certo ... vedo anche che in GameManager hai un reference dio espressamente di tipo CalòPlayer, quindi il tipo è noto/specifico.

La questione è il concetto d'uso di start.