Godzil :
Squalyl: oui dans un environement compilé c'est ce qui se passera, dans un environement interpreté, on peut savoir quel est le type reel de o
En théorie, en compilé aussi, mais c'est lent :
En compile time on peut faire une partie de la 'job' :
- Sortir toutes les méthodes susceptibles d'êtres appelées (même nombre d'argument, entre autres + on élimines celles qui ont des paramètres dont les classes ne correspondent pas à une superclasse de l'argument passé, etc.)
En run time :
- Vérifier, pour chaque argument qui n'est pas un type primitif, la nature exacte de l'objet.
- Faire un 'best match' avec les méthode compatibles (i.e. si l'argument est une String, prendre la méthode qui accepte des Strings avant celle qui accepte des Objects).
- Invoquer la méthode.
Très lent p/r à
En compile time :
- Sortir toutes les méthodes susceptibles d'êtres appelées (même nombre d'argument, entre autres + on élimines celles qui ont des paramètres dont les classes ne correspondent pas à une superclasse de l'argument passé, etc.)
- Faire un 'best match' - là on regarde le type déclaré de l'objet - avec les méthode compatibles (i.e. si l'argument est une String, prendre la méthode qui accepte des Strings avant celle qui accepte des Objects).
En run time :
- Invoquer la méthode.
Moka utilise la deuxième méthode ...