next up previous contents index
Next: Sous-typage Up: Liaison tardive Previous: Redéfinition

Évaluation d'une invocation

De façon générale, l'évaluation d'une invocation de méthode, de la forme cible.m(arg1, ...), s'effectue en plusieurs étapes :

1.
le type (classe ou interface) t qui doit avoir une méthode m parmi ses membres est déterminé comme le type de l'expression cible (et non le type de sa valeur) ;
2.
le type des arguments détermine les méthodes candidates parmi les méthodes de nom m de t ;
3.
s'il y a plusieurs méthodes candidates (cas de surcharge), l'une d'entre-elles est sélectionnée comme étant la plus spécifique, si elle existe ;
4.
l'évaluation de l'expression cible produit une référence à une instance d'une classe C qui est nécessairement un sous-type de t ;
5.
l'évaluation des arguments arg1, ... produit des valeurs v1,...(le type de ces valeurs n'intervient pas) ;
6.
la liaison tardive détermine la méthode qui sera invoquée comme étant la méthode sélectionnée si elle n'est pas redéfinie, ou sinon comme la redéfinition de la méthode sélectionnée qui est héritée par la classe C;
7.
les valeurs des arguments sont éventuellement convertis en des valeurs du type des paramètres de la méthode déterminée par la liaison tardive ;
8.
la création d'un cadre d'invocation de cette méthode, appliquée à l'instance obtenue, avec les arguments évalués.


next up previous contents index
Next: Sous-typage Up: Liaison tardive Previous: Redéfinition
R. Lalement
2000-10-23