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

Класс может реализовать несколько интерфейсов, разделив их имена запятыми, как показано в следующем коде:

class НекоеИмя implements НекийИнтерфейс, НекийДругойИнтерфейс { }

В данном случае экземпляры класса НекоеИмя принадлежат всем трем указанным типам данных: НекоеИмя, НекийИнтерфейс и НекийДругойИнтерфейс. Если класс реализует два интерфейса, в каждом из которых описан метод с одним и тем же именем, но с отличающейся сигнатурой (то есть имя метода, список параметров и тип возвращаемого значения), то компилятор сгенерирует ошибку, указывающую на то, что один из методов реализован неправильно.

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

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

Если класс объявит, что он реализует некий интерфейс, но компилятор не сможет найти этот интерфейс, то появится следующая ошибка:

Interface ИмяИнтерфейса was not found.

На русском языке ошибка будет выглядеть следующим образом: Интерфейс ИмяИнтерфейса не найден.

Соглашения по именованию интерфейсов

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

Предположим, что приложение содержит несколько классов, представляющих визуальные объекты. Некоторые объекты можно перемещать, другие — нет. В нашем проекте объекты, которые могут быть перемещены, должны реализовать интерфейс Moveable. Рассмотрим пример теоретического класса Product Icon, реализующего интерфейс Moveable:

public class Productlcon implements Moveable { public function getPosition ( ):Point {

}

public function setPosition (pos:Point):void { }

}

Интерфейс с именем Moveable обозначает конкретную возможность, которую он добавляет в класс. Объект может быть фрагментом изображения или блоком текста, но, если он реализует интерфейс Moveable, его можно перемещать. Примерами похожих имен являются Storable, Kill able или Serializable. Некоторые разработчики перед именем интерфейса дополнительно указывают букву I, например IMoveable, IKillable или ISerializable.

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

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

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

Полезные ссылки
Случайные записи
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 102
  • 09.07.2010">Создавайте сайт правильно
  • 12.06.2011">Американские ученым удалось превратить в нейроны клетки кожи
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.83
  • 18.02.2011">Вырезание объекта с помощью фильтра в Photoshop
  • 05.07.2012">Домен iPad3.com скоро перейдет в собственность Apple и путешествия в Кипр
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.119
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 020
  • 03.09.2010">Сайт с точки зрения маркетинга.
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 141
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.48
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 130
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.92
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.103
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 025
Опрос

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

View Results

Loading ... Loading ...