Declaração de classe.
Declara o nome de uma classe bem como uma definição de variáveis, propriedades e métodos que compõem a classe.
[modifiers] class classname [extends baseclass] [implements interfaces]{
[classmembers]
}
Argumentos
modificadores
Opcional. Modificadores de controlam a visibilidade e o comportamento da classe.ClassName
Obrigatório. Nome da classe; segue as convenções de nomenclatura de variáveis padrão.estende
Opcional. Palavra-chave, indicando que a classe classname estende baseclass. Se esta palavra-chave não for usada, uma classe base padrão do JScript é criada que estende Object.BaseClass
Opcional. O nome da classe que está sendo estendido.implementa
Opcional. Palavra-chave, indicando que a classe classname implementa uma ou mais interfaces.interfaces
Opcional. Uma lista delimitada por vírgulas de nomes de interface.classmembers
Opcional. classmemberspode ser declarações de método ou construtor (definido com o função instrução), declarações de propriedade (definido com o obter a função e função definida instruções), declarações de campo (definido com o var ou const instruções), declarações de inicializador (definido com o estático instrução), declarações de enumeração (definido com o enum instrução), ou aninhados declarações de classe.
Comentários
Classes podem ser usadas para criar instâncias ou servir como base para outras classes, dependendo dos modificadores de classe. Se uma classe é marcada com o abstrata modificador, a classe pode servir como uma classe base para outras classes para estender, mas as instâncias de um abstrata classe não pode ser criado. Se uma classe é marcada com o final modificador, instâncias da classe podem ser criadas com o nova operador, mas a classe não pode servir como base.
Métodos e construtores podem ser sobrecarregados em uma classe. Conseqüentemente, os vários métodos (ou construtores) podem ter os mesmos nomes. Os membros da classe sobrecarregada são diferenciados por suas assinaturas e exclusivas, que são compostas do nome do membro e o tipo de dados de cada um de seus parâmetros formais. Sobrecargas permitem que uma classe de métodos de grupo com uma funcionalidade semelhante.
Uma classe pode herdar a funcionalidade de uma classe base existente usando o estende palavra-chave. Os métodos da classe base podem ser substituídos, declarando um novo método com a mesma assinatura que o novo método de classe. Métodos na nova classe podem acessar membros substituídos do classe base usando o super instrução.
Uma classe pode ser padronizada em uma ou mais interfaces usando o implementa palavra-chave. Uma classe não pode herdar qualquer comportamento de uma interface, como uma interface não fornece uma implementação para qualquer membro. Uma interface fornece a classe com uma assinatura que pode ser usado ao interagir com outras classes. A menos que a classe que implementa uma interface é abstrata, uma implementação deve ser fornecida para cada método definido na interface.
Modificadores podem ser usados para fazer com que uma instância de classe se comportam mais como um objeto JScript. Para permitir uma instância de classe manipular as propriedades adicionadas dinamicamente, use o expando modificador, que cria automaticamente um padrão indexados propriedade para a classe. Apenas as propriedades de expando está acessíveis usando a notação de colchete da JScript Object objeto.
Exemplo 1
O exemplo a seguir cria um CPerson classe com vários campos e métodos, cujos detalhes foram omitidos. O CPerson classe serve como a classe base para o CCustomer classe no segundo exemplo.
// All members of CPerson are public by default.
class CPerson{
var name : String;
var address : String;
// CPerson constuctor
function CPerson(name : String){
this.name = name;
};
// printMailingLabel is an instance method, as it uses the
// name and address information of the instance.
function printMailingLabel(){
print(name);
print(address);
};
// printBlankLabel is static as it does not require
// any person-specific information.
static function printBlankLabel(){
print("-blank-");
};
}
// Print a blank mailing label.
// Note that no CPerson object exists at this time.
CPerson.printBlankLabel();
// Create a CPerson object and add some data.
var John : CPerson = new CPerson("John Doe");
John.address = "15 Broad Street, Atlanta, GA 30315";
// Print a mailing label with John's name and address.
John.printMailingLabel();
A saída desse código é:
-blank-
John Doe
15 Broad Street, Atlanta, GA 30315
Exemplo 2
A CCustomer classe é derivada de CPerson, ter campos adicionais e métodos não aplicáveis a parte genérica do CPerson classe.
// Create an extension to CPerson.
class CCustomer extends CPerson{
var billingAddress : String;
var lastOrder : String;
// Constructor for this class.
function CCustomer(name : String, creditLimit : double){
super(name); // Call superclass constructor.
this.creditLimit = creditLimit;
};
// Customer's credit limit. This is a private field
// so that only member functions can change it.
private var creditLimit : double;
// A public property is needed to read the credit limit.
function get CreditLimit() : double{
return creditLimit;
}
}
// Create a new CCustomer.
var Jane : CCustomer = new CCustomer("Jane Doe",500.);
// Do something with it.
Jane.billingAddress = Jane.address = "12 Oak Street, Buffalo, NY 14201";
Jane.lastOrder = "Windows 2000 Server";
// Print the credit limit.
print(Jane.name + "'s credit limit is " + Jane.CreditLimit);
// Call a method defined in the base class.
Jane.printMailingLabel();
A saída desta parte do código é:
Jane Doe's credit limit is 500
Jane Doe
12 Oak Street, Buffalo, NY 14201