Оператор interface
Обновлен: Ноябрь 2007
Объявляет имя интерфейса, а также свойства и методы, составляющие интерфейс.
[modifiers] interface interfacename [implements baseinterfaces] {
[interfacemembers]
}
Аргументы
modifiers
Необязательный. Модификаторы, которые управляют видимостью и поведением свойства.interfacename
Обязательный. Имя interface, удовлетворяющее обычным правилам именования переменных.implements
Необязательный. Ключевое слово, указывающее, что данный интерфейс реализует или добавляет члены к ранее определенному интерфейсу. Если данное ключевое слово не используется, создается стандартный базовый интерфейс JScript.baseinterfaces
Необязательный. Разделенный запятыми список имен интерфейсов, реализованных интерфейсом interfacename.interfacemembers
Необязательный. Аргумент interfacemembers может содержать либо объявления методов (определенных с помощью оператора function), либо объявления свойств (определенных с помощью операторов function get и function set).
Заметки
Синтаксис объявления interface в JScript аналогичен синтаксису объявления класса. Интерфейс можно назвать классом, все члены которого являются абстрактными; он может содержать только объявления свойств и методов без тел функций. interface не может содержать объявления полей, инициализаторов или вложенных классов. interface может реализовывать один или несколько интерфейсов с помощью ключевого слова implements.
Класс может расширять только один базовый класс, однако класс можно реализовывать несколько интерфейсов. Возможность реализации нескольких интерфейсов с помощью одного класса предоставляет форму множественного наследования, которая проще, чем в других объектно-ориентированных языках, например в C++.
Пример
В следующем коде показано, как одна реализация может наследоваться несколькими интерфейсами.
interface IFormA {
function displayName();
}
// Interface IFormB shares a member name with IFormA.
interface IFormB {
function displayName();
}
// Class CForm implements both interfaces, but only one implementation of
// the method displayName is given, so it is shared by both interfaces and
// the class itself.
class CForm implements IFormA, IFormB {
function displayName() {
print("This the form name.");
}
}
// Three variables with different data types, all referencing the same class.
var c : CForm = new CForm();
var a : IFormA = c;
var b : IFormB = c;
// These do exactly the same thing.
a.displayName();
b.displayName();
c.displayName();
После выполнения этой программы выводится следующий результат:
This the form name.
This the form name.
This the form name.