Share via


Comment JScript surcharge les méthodes

Lorsque plusieurs membres JScript (fonctions ou propriétés) d'une classe ont le même nom, mais des signatures différentes, ils portent le nom de fonctions (propriétés) « surchargées ». La « signature » d'une fonction est basée sur le nombre, le type et l'ordre des paramètres qu'elle accepte. Deux fonctions ont la même signature si elles acceptent le même nombre d'arguments, avec le même type, dans le même ordre. Les fonctions qui acceptent les mêmes types d'arguments dans un ordre différent, ou les fonctions qui ont un nombre différent d'arguments ou des arguments de type différent, ont des signatures différentes. (Notez que les noms des arguments n'ont aucun effet sur la signature.) Les fonctions statiques peuvent également participer à la surcharge, mais comme avec les types de retour, l'état statique d'une méthode n'affecte pas sa signature. Par conséquent, une méthode statique avec le même nom qu'une méthode d'instance doit avoir une liste de paramètres différente.

Logique de traitement

Lorsqu'une fonction surchargée est appelée, la fonction surchargée dont les arguments correspondent le plus étroitement aux arguments passés est appelée, en fonction des types d'arguments réels passés à la fonction. Si le type d'argument correspond exactement à une surcharge particulière, cette surcharge est appelée. Si les types d'arguments ne correspondent exactement à aucune surcharge, un processus d'élimination détermine quelle surcharge est appelée. Le processus d'élimination est basé sur la facilité avec laquelle les types réels peuvent être convertis en ceux des surcharges disponibles. Pour plus d'informations, consultez Contrainte dans JScript. Dans cet exemple, la classe MethodOverload a trois méthodes surchargées nommées Greetings. La première surcharge ne prend aucun paramètre, la deuxième surcharge prend un paramètre de type String et la troisième surcharge prend deux paramètres : un de type String et un de type int.

var methodOverload = new MethodOverload();
methodOverload.Greetings();
methodOverload.Greetings("Mr. Brown");
methodOverload.Greetings(97, "Mr. Brown");

class MethodOverload
{
   function Greetings()
   {
     print("Hello, and welcome!");
   }
   function Greetings(name : String)
   {
     print("Hello, " + name + "!");
   }
   function Greetings(ticket : int, name : String)
   {
     print("Hello, " + name + "! Your ticket number is " + ticket + ".");
   }
}

Le résultat généré par ce programme est le suivant :

Hello, and welcome!
Hello, Mr.Brown!
Hello, Mr.Brown! Your ticket number is 97.

Voir aussi

Autres ressources

Visite guidée du langage JScript

Types de données JScript