Partager via


class, instruction

Déclare le nom d'une classe ainsi qu'une définition des variables, des propriétés et des méthodes qui composent la classe.

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

Arguments

  • modifiers
    Facultatif. Modificateurs qui contrôlent la visibilité et le comportement de la classe.

  • classname
    Obligatoire. Nom de la **classe **; qui respecte les conventions d'affectation des noms de variable standard.

  • extends
    Facultatif. Mot clé indiquant que la classe classname étend baseclass. En l'absence de ce mot clé, une classe de base JScript standard est créée afin d'étendre System.Object.

  • baseclass
    Facultatif. Nom de la classe qui est étendue.

  • implements
    Facultatif. Mot clé indiquant que la classe classname implémente une ou plusieurs interfaces.

  • interfaces
    Facultatif. Une liste, délimitée par des virgules, de noms d'interfaces.

  • classmembers
    Facultatif. classmembers peut correspondre à des déclarations de méthode ou de constructeur (définies avec l'instruction function), des déclarations de propriété (définies avec les instructions function get et function set), des déclarations de champ (définies avec les instructions var ou const), des déclarations d'initialiseur (définies avec l'instruction static), des déclarations d'énumération (définies avec l'instruction enum) ou des déclarations de classe imbriquée.

Notes

Les classes peuvent être utilisées pour créer des instances ou servir de base pour d'autres classes, en fonction des modificateurs de la classe. Si une classe est marquée avec le modificateur abstract, elle peut servir de classe de base pour étendre d'autres classes ; en revanche, il est impossible de créer des instances d'une classe abstract. Si une classe est marquée avec le modificateur final, vous pouvez créer des instances de la classe avec l'opérateur new ; en revanche, elle ne peut pas servir de classe de base.

Il est possible de surcharger les méthodes et les constructeurs d'une classe. Dès lors, plusieurs méthodes (ou constructeurs) peuvent avoir le même nom. Les membres de classe surchargés se distinguent par leur signature unique, constituée du nom du membre et du type de données de chacun de ses paramètres formels. Les surcharges permettent à une classe de regrouper des méthodes présentant des fonctionnalités similaires.

Une classe peut hériter des fonctionnalités d'une classe de base existante en utilisant le mot clé extends. Les méthodes de la classe de base peuvent être substituées en déclarant une nouvelle méthode avec la même signature comme nouvelle méthode de la classe. Les méthodes de la nouvelle classe peuvent accéder à des membres substitués de la classe de base à l'aide de l'instruction super.

Il est possible d'appliquer le modèle d'une classe sur une ou plusieurs interfaces à l'aide du mot clé implements. Une classe ne peut pas hériter du comportement d'une interface dans la mesure où l'interface ne fournit d'implémentation à aucun membre. En revanche, une interface fournit à la classe une « signature » qui peut être utilisée lors de l'interaction avec d'autres classes. À moins que la classe implémentant une interface ne soit abstract, il faut fournir une implémentation pour chaque méthode définie dans l'interface.

En utilisant des modificateurs, vous pouvez faire en sorte qu'une instance de classe se comporte comme un objet JScript. Pour permettre à une instance de classe de gérer dynamiquement des propriétés ajoutées, utilisez le modificateur expando, qui crée automatiquement une propriété indexée par défaut pour la classe. Seules les propriétés expando sont accessibles à l'aide de la notation de crochets de l'objet Object JScript.

Exemple 1

L'exemple suivant crée une classe CPerson avec divers champs et méthodes, lesquels ne sont pas détaillés ici. La classe CPerson sert de classe de base à la classe CCustomer dans le second exemple.

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

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

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

Exemple 2

Une classe CCustomer est dérivée de CPerson ; elle possède des champs et des méthodes supplémentaires qui ne sont pas applicables à un membre générique de la 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();

Le résultat généré par cette section de code est le suivant :

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

Configuration requise

Version .NET

Voir aussi

Référence

interface, instruction

function, instruction

function get, instruction

function set, instruction

var, instruction

const, instruction

static, instruction

new, opérateur

this, instruction

super, instruction

Autres ressources

Modificateurs