En règle générale, les coercions de types sont IMPLICITES en Java. A tout moment une variable d'un certain type peut recevoir une valeur d'une sous-classe, ou d'une classe implantant l'interface de son type. Un type ancêtre peut recevoir une valeur descendante.
Par contre, il est nécessaire d'indiquer EXPLICITEMENT, une coercion de type dans l'autre sens : un type descendant reçoit une valeur ancêtre. Il y a un certain danger d'utiliser les coercions explicites, dans la mesure où l'envoi d'un message peut retourner une erreur de type "méthode non trouvée".