Share via


class-Anweisung

Deklariert sowohl den Namen einer Klasse als auch eine Definition der Variablen, Eigenschaften und Methoden der Klasse.

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

Argumente

  • modifiers
    Optional. Modifizierer, die die Sichtbarkeit und das Verhalten der Klasse steuern.

  • classname
    Erforderlich. Der Name der class. Entspricht den Standardnamenskonventionen für Variablen.

  • extends
    Optional. Ein Schlüsselwort, das angibt, dass baseclass von der Klasse classname erweitert wird. Wenn das Schlüsselwort nicht verwendet wird, wird eine JScript-Standardbasisklasse erstellt, die System.Object erweitert.

  • baseclass
    Optional. Der Name der erweiterten Klasse.

  • implements
    Optional. Ein Schlüsselwort, das angibt, dass die Klasse classname eine oder mehrere Schnittstellen implementiert.

  • interfaces
    Optional. Eine kommagetrennte Liste mit Schnittstellennamen.

  • classmembers
    Optional. Bei classmembers kann es sich um Methoden- oder Konstruktordeklarationen (durch die function-Anweisung definiert), Eigenschaftendeklarationen (durch die Anweisungen function get und function set definiert), Felddeklarationen (durch die Anweisungen var oder const definiert), Initialisierungsdeklarationen (durch die static-Anweisung definiert), Enumerationsdeklarationen (durch die enum-Anweisung definiert) oder um Deklarationen geschachtelter Klassen handeln.

Hinweise

Mithilfe von Klassen können Instanzen erstellt werden, oder sie können in Abhängigkeit von den jeweiligen Klassenmodifizierern die Basis für andere Klassen sein. Wenn eine Klasse mit dem abstract-Modifizerer markiert ist, kann sie als Basisklasse für andere zu erweiternde Klassen fungieren, es können jedoch keine Instanzen einer abstract-Klasse erstellt werden. Wenn eine Klasse mit dem final-Modifizerer markiert ist, können mithilfe des Operators new Instanzen der Klasse erstellt werden, aber die Klasse kann nicht als Basisklasse verwendet werden.

Methoden und Konstruktoren können in einer Klasse überladen werden. Folglich können mehrere Methoden (bzw. Konstruktoren) denselben Namen haben. Überladene Klassenmember werden anhand ihrer eindeutigen Signatur unterschieden, die aus dem Namen des Members und dem Datentyp all seiner formalen Parameter besteht. Mit Überladungen können in einer Klasse Methoden mit ähnlichen Funktionen zusammenfasst werden.

Eine Klasse kann mithilfe des Schlüsselwortes extends die Funktionen einer vorhandenen Basisklasse erben. Die Methoden der Basisklasse können überschrieben werden, indem eine neue Methode mit derselben Signatur wie die neue Klassenmethode deklariert wird. Die Methoden in der neuen Klasse können mithilfe der super-Anweisung auf überschriebene Member der Basisklasse zugreifen.

Eine Klasse kann mit dem Schlüsselwort implements auf einer oder mehreren Schnittstellen abgebildet werden. Eine Klasse kann kein Verhalten von einer Schnittstelle erben, weil Schnittstellen keine Implementierung für Member bereitstellen. Die Schnittstelle stellt für die Klasse eine "Signatur" bereit, die bei der Interaktion mit anderen Klassen verwendet werden kann. Wenn die Klasse mit Schnittstellenimplementierung nicht abstract ist, muss für jede in der Schnittstelle definierte Methode eine Implementierung bereitgestellt werden.

Mit Modifizierern kann das Verhalten einer Klasseninstanz so geändert werden, dass es eher dem Verhalten eines JScript-Objekts entspricht. Damit eine Klasseninstanz dynamisch hinzugefügte Eigenschaften behandeln kann, verwenden Sie den expando-Modifizierer, der automatisch eine indizierte Standardeigenschaft erstellt. Die Notation mit eckigen Klammern des Object-Objekts von JScript lässt nur den Zugriff auf expando-Eigenschaften zu.

Beispiel 1

Im folgenden Beispiel wird eine CPerson-Klasse mit verschiedenen Feldern und Methoden erstellt, wobei deren Details nicht angezeigt werden. Die CPerson-Klasse ist im zweiten Beispiel die Basisklasse für die CCustomer-Klasse.

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

Ausgabe dieses Codes:

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

Beispiel 2

Von CPerson wird eine CCustomer-Klasse mit zusätzlichen Feldern und Methoden abgeleitet, die nicht auf einen generischen Member der CPerson-Klasse anwendbar sind.

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

Ausgabe dieses Codeabschnitts:

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

Anforderungen

Version .NET

Siehe auch

Referenz

interface-Anweisung

function-Anweisung

function get-Anweisung

function set-Anweisung

var-Anweisung

const-Anweisung

static-Anweisung

new-Operator

this-Anweisung

super-Anweisung

Weitere Ressourcen

Modifizierer