Como o JScript Overloads métodos

Quando dois ou mais JScript membros (funções ou propriedades) em uma classe tem o mesmo nome mas diferentes assinaturas, eles são chamados de "sobrecarregado" funções (Propriedades). A "assinatura" de uma função se baseia o número, tipo e ordem dos parâmetros, que ele aceita. Duas funções têm a mesma assinatura se eles aceitam o mesmo número de argumentos, com o mesmo tipo na mesma ordem. Funções que aceitam os mesmos tipos de argumentos em uma ordem diferente ou funções que têm um número diferente de argumentos ou argumentos de tipos diferentes possuem assinaturas diferentes. (Observe que os nomes dos argumentos não têm efeito sobre a assinatura). Funções estáticas também podem participar de sobrecarga, mas como com os tipos de retorno, o status de estático de um método não afeta sua assinatura. Portanto, um método estático com o mesmo nome de um método de instância deve ter uma lista de parâmetros diferentes.

Lógica de processamento

Quando uma função sobrecarregada é chamada, a função sobrecarregada, cujos argumentos mais se aproximam os argumentos passados é chamada, dependendo dos tipos de argumentos passados para a função reais. Se os tipos de argumento coincidir exatamente com uma sobrecarga específica, essa sobrecarga é chamada. Se os tipos de argumento não qualquer sobrecarga exatamente iguais, um processo de eliminação determina qual sobrecarga é chamada. O processo de eliminação é baseado em tipos reais de como é fácil, podem ser convertidos para os tipos de sobrecargas de disponíveis. Para obter mais informações, consulte Coerção de JScript. Neste exemplo, a classe MethodOverload tem três métodos sobrecarregados, chamados de Greetings. A primeira sobrecarga sem parâmetros, a segunda sobrecarga usa um parâmetro de um String usa dois parâmetros de tipo e a sobrecarga de terceira: um String tipo e um int tipo.

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 + ".");
   }
}

A saída deste programa é:

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

Consulte também

Outros recursos

Tour da linguagem de JScript

Tipos de dados de JScript