Поделиться через


Оператор сlass

Обновлен: Ноябрь 2007

Объявляет имя класса и определяет составляющие его переменные, свойства и методы.

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

Аргументы

  • modifiers
    Необязательный. Модификаторы, которые управляют видимостью и поведением класса.

  • classname
    Обязательный. Имя класса, удовлетворяющее обычным правилам именования переменных.

  • extends
    Необязательный. Ключевое слово, указывающее, что класс classname расширяет базовый класс baseclass. Если данное ключевое слово не используется, создается стандартный базовый класс JScript, который расширяет класс System.Object.

  • baseclass
    Необязательный. Имя расширяемого класса.

  • implements
    Необязательный. Ключевое слово, которое указывает, что класс classname реализует один или несколько интерфейсов.

  • interfaces
    Необязательный. Разделенный запятыми список имен интерфейсов.

  • classmembers
    Необязательный. Аргумент classmembers может содержать объявления методов или конструкторов (определенных с помощью оператора function), свойств (определенных с помощью операторов function get и function set), полей (определенных с помощью операторов var или const), инициализаторов (определенных с помощью оператора static), перечислений (определенных с помощью оператора enum) или вложенных классов.

Заметки

В зависимости от модификаторов, классы можно использовать для создания экземпляров или в качестве базовых для других классов. Если класс помечен модификатором abstract, его можно использовать в качестве базового для других классов, однако экземпляры абстрактного класса создавать нельзя. Если класс помечен модификатором final, можно создавать его экземпляры с помощью оператора new, однако такой класс нельзя использовать в качестве базового.

В классе можно перегружать методы и конструкторы. Поэтому одно имя может принадлежать нескольким методам (или конструкторам). Перегруженные члены классов различаются уникальными подписями, которые состоят из имени члена и типа данных для каждого из его формальных параметров. Перегрузка позволяет группировать методы класса с похожей функциональностью.

Класс может унаследовать функциональность существующего базового класса с помощью ключевого слова extends. Методы базового класса можно переопределить посредством объявления нового метода с подписью метода нового класса. Методы в новом классе могут получать доступ к переопределенным членом базового класса с помощью оператора super.

Класс можно использовать в качестве шаблона для одного или нескольких интерфейсов с помощью ключевого слова implements. Класс не может наследовать поведение из интерфейса, поскольку интерфейс не предоставляет реализацию членов. Интерфейс не предоставляет классу "подпись", которую можно использовать для взаимодействия с другими классами. Для каждого метода, определенного в интерфейсе, необходимо предоставить реализацию, за исключением случаев, когда класс, реализующий интерфейс, является абстрактным.

Чтобы поведение класса больше походило на поведение объектов JScript, можно использовать модификаторы. Чтобы разрешить экземпляру класса обрабатывать динамически добавленные свойства, используется модификатор expando, который автоматически создает для класса индексированное свойство по умолчанию. Используя нотацию с квадратными скобками для объекта Object языка JScript, можно получать доступ только к свойствам "expando".

Пример 1

В следующем примере создается класс CPerson с различными полями и методами, подробные сведения о которых опущены. Класс CPerson используется в качестве базового для класса CCustomer из второго примера.

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

В результате выполнения данного кода выводятся следующие данные:

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

Пример 2

Класс CCustomer наследует от класса CPerson, однако содержит дополнительные поля и методы, неприменимые к универсальным членам класса 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();

В результате выполнения этой части кода выводятся следующие данные:

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

Требования

Версия .NET

См. также

Ссылки

Оператор interface

Оператор function

Оператор function get

Оператор "function set"

Оператор var

Оператор const

Оператор static

Оператор new

Оператор this

Оператор super

Другие ресурсы

Модификаторы