Como o JScript Overloads métodos
Quando dois ou mais JScript membros (funções ou propriedades) em um clsistema autônomos tiverem o mesmo nome mas assinaturas diferentes, eles são chamados sistema autônomo "sobrecarga" funções (Propriedades)."Assinatura" de uma função se baseia o número, tipo e a ordem dos parâmetros que ele aceite.Duas funções têm a mesma assinatura se aceitar 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 de tem 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 sistema autônomo com tipos de retorno, status de um método estático 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 real dos argumentos passados para a função.Se os tipos de argumento coincidem exatamente uma sobrecarga específica, essa sobrecarga é chamada.Se os tipos de argumento não corresponderem exatamente qualquer sobrecarga, um processo de eliminação determina qual sobrecarga é chamada.O processo de eliminação é baseado em tipos como é fácil real pode ser convertido em tipos no sobrecargas disponível.Para obter mais informações, consulte Coerção em JScript. Neste exemplo, classe MethodOverload possui três métodos sobrecarregados chamados de Greetings.A primeira sobrecarga não usa nenhum parâmetro, a segunda sobrecarga assume um parâmetro de um String tipo e a sobrecarga de terceira usa dois parâmetros: a String tipo e um int Digite.
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.