Руководство по 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

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

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

Полезные ссылки
Случайные записи
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 141
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.136
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 083
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 057
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 098
  • 11.08.2011">Пропуск на модный олимп
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 027
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.78
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 063
  • 20.02.2010">Как делать деньги в твиттере?
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 044
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.11
  • 23.08.2011">Британский ученый призывает запретить сливочное масло.
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 078
  • 14.03.2012">В Google Maps обновились снимки разрушенных городов Японии
Опрос

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

View Results

Loading ... Loading ...