Руководство по actionscript. часть 2, стр. 003

В игру вступают… интерфейсы!

Интерфейсы и классы с несколькими типами данных

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

Синтаксически интерфейс представляет собой просто список методов. Например, следующий код создает интерфейс LogRecipient, содержащий один-единственный метод update ( ) (обратите внимание, что интерфейсы, как и классы, могут быть описаны с помощью модификаторов управления доступом public и internal).

public interface LogRecipient { function update(msg:String):void;

}

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

Например, чтобы указать, что класс LogUI согласен определить метод update ( ) (описанный в интерфейсе LogRecipient), мы используем следующий код:

class LogUI extends Sprite implements LogRecipient { public function update (msg:String):void { // Отображение статусного сообщения на экране, код не показан…

}

}

Вместо того чтобы расширять класс LogRecipient, LogUI расширяет класс Sprite и реализует интерфейс LogRecipient. Поскольку класс LogUI реализует интерфейс LogRecipient, он должен определить метод update ( ). В противном случае компилятор сгенерирует следующую ошибку:

Interface method update in namespace LogRecipient not implemented by class LogUI.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 110
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 012
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.148
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 081
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.96
  • 03.10.2010">Как сделать матовую кожу?
  • 28.07.2011">Интернет в роли Купидона
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 067
  • 28.04.2012">В Google Maps была добавлена функция 3D-фототуров
  • 11.08.2010">Популярное расположение контактной информации
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.6
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 034
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.138
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.14
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 049
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...