Istruzione class

Aggiornamento: novembre 2007

Consente di dichiarare il nome di una classe, nonché la definizione delle variabili, delle proprietà e dei metodi corrispondenti.

[modifiers] class classname [extends baseclass] [implements interfaces]{
   [classmembers]
}

Argomenti

  • modifiers
    Facoltativo. Modificatori che controllano la visibilità e il comportamento della classe.

  • classname
    Obbligatorio. Nome della classe, conforme alle convenzioni di denominazione standard delle variabili.

  • extends
    Facoltativo. Parola chiave indicante che la classe classname estende la classe baseclass. Se tale parola chiave non è utilizzata, viene creata una classe base JScript standard che estende System.Object.

  • baseclass
    Facoltativo. Nome della classe che viene estesa.

  • implements
    Facoltativo. Parola chiave indicante che la classe classname implementa una o più interfacce.

  • interfaces
    Facoltativo. Elenco delimitato da virgole di nomi di interfaccia.

  • classmembers
    Facoltativo. L'argomento classmembers può essere rappresentato da dichiarazioni di metodo o di costruttore (definite mediante l'istruzione function), di proprietà (definite mediante le istruzioni function get e function set), di campo (definite mediante le istruzioni var o const), di inizializzatore (definite mediante l'istruzione static), di enumerazione (definite mediante l'istruzione enum) o di classi nidificate.

Note

Le classi possono essere utilizzate per creare istanze o come classi base per altre classi, a seconda del modificatore in esse specificato. Se una classe è contrassegnata con il modificatore astratta può fungere da classe base per l'estensione ad altre classi. Non è invece possibile creare istanze di una classe abstract. Se una classe è contrassegnata con il modificatore final, è possibile crearne istanze mediante l'operatore new. Non può fungere invece da classe base di un'altra classe.

I metodi e i costruttori possono essere sottoposti a overload in una classe. Pertanto, più metodi o costruttori possono avere lo stesso nome. I membri delle classi sottoposti a overload sono contraddistinti da firme univoche, costituite dal nome del membro e dal tipo di dati di ciascuno dei relativi parametri formali. Gli overload consentono di raggruppare in una classe più metodi con funzionalità analoghe.

Una classe può ereditare la funzionalità di una classe esistente mediante la parola chiave extends. I metodi della classe base possono essere sottoposti a override dichiarando un nuovo metodo con la stessa firma come metodo della nuova classe. Se si specifica l'istruzione super i metodi della nuova classe possono accedere ai membri della classe base sottoposti a override.

Una classe può essere basata su una o più interfacce mediante la parola chiave implements, ma non può ereditare comportamenti da un'interfaccia poiché questa non fornisce implementazioni per alcun membro. Un'interfaccia fornisce invece alla classe una firma che può essere utilizzata durante l'interazione con le altre classi. Per ogni metodo definito nell'interfaccia è necessario fornire un'implementazione, a meno che la classe che implementa l'interfaccia sia astratta.

Se si utilizzano i modificatori, un'istanza della classe si comporterà in modo simile a un oggetto JScript. Per consentire a un'istanza della classe la gestione dinamica delle proprietà aggiunte, utilizzare il modificatore expando che consente di creare automaticamente una proprietà indicizzata predefinita per la classe. Utilizzando la notazione delle parentesi quadre dell'oggetto Object JScript è possibile accedere solo alle proprietà expando.

Esempio 1

Nell'esempio seguente viene creata una classe CPerson con vari campi e metodi, i cui dettagli sono stati omessi. La classe CPerson funge da classe base della classe CCustomer utilizzata nel secondo esempio.

// 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();

L'output del codice è il seguente:

-blank-
John Doe
15 Broad Street, Atlanta, GA 30315

Esempio 2

Una classe CCustomer viene derivata dalla classe CPerson e dispone di campi e metodi aggiuntivi non applicabili a un membro generico della classe CPerson.

// 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();

L'output di questa parte di codice è il seguente:

Jane Doe's credit limit is 500
Jane Doe
12 Oak Street, Buffalo, NY 14201

Requisiti

Versione .NET

Vedere anche

Riferimenti

Istruzione interface

Istruzione function

Istruzione function get

Istruzione function set

Istruzione var

Istruzione const

Istruzione static

Operatore new

Istruzione this

Istruzione super

Altre risorse

Modificatori