|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2011
Сообщений: 221
|
Помогите разобрать понятие интерфейса
Уселся читать книженцию Коллина Мука по AS3. Добрался до темы "Интерфейсы" в которой окончательно заплутал.
Объясните пожалуйста, в чем принципиальная разница между интерфейсом и классом? Что значит класс реализует интерфейс? Почему интерфейс не может быть сам реализован? |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
Цитата:
класс - реализация.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
[+4 06.05.14]
|
Ну вот давайте представим такую систему.
Есть у вас в руках 10 ручек, разных производителей, разных паст , все ручки соотв. Для чего нужны все эти ручки ? чтобы писать наверное. Значит они реализуют метод Write. Рассмотрим это на примере Классы Pencil и EmptyPencil - разные , но реализуют общий интерфейс IPencil имеющий 1 метод всего лишь doWrite()
__________________
Марк Tween |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
В интерфейсе указывается, какие параметры функция принимает и что возвращает. Реализации (т.е. что собсно делать с этими параметрами и как получать возвращаемое значение) - в интерфейсе нет.
В AS3 можно имлементить сколько угодно интерфейсов, но наследоваться только от одного класса. PS: Есть термин "абстрактные функции", это как-раз только такие описания функций, как в интерфейсе. В as3 нет таких функций. В С++ есть такие функции, но нет интерфейсов %)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Цитата:
2автор: понимание, зачем они нужны, придет со временем. Если вы только начали изучать as3, советую не останавливаться и идти дальше. Но в будущем обязательно вернитесь к этой главе.
__________________
тут я |
|
|||||
Регистрация: May 2011
Сообщений: 221
|
Но ведь интерфейсы могут содержать методы, разве это не будет реализацией?
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Есть утюг, телевизор, ноутбук и паяльник. Все делают совершенно разные вещи, но у всех один интерфейс "вилка на 220". Он гарантирует, что если у Вас в стене есть розетка на 220, то Вы сможете воспользоваться любым из этих приборов. Если класс А и класс В реализуют интерфейс IC, описывающий метод show(), это гарантирует что у обоих классов есть метод show(), принимающий такие-то типы данных и возвращающий такой-то тип данных. Это значит, что Вы можете использовать в коде экземпляр как класса А, так и класса В в одной и той же ситуации, и ошибки – отсутствия у экземпляра метода show() – не произойдет. Что именно происходит внутри метода – реализация – зависит уже от класса. Например рисовальные инструменты – все они при движении мышки оставляют след на "бумаге". Какой именно, размытый как у кисточки или резкий как у карандаша – это уже конкретная реализация. Важно что мы можем подставить любой инструмент и вызывать у него метод "рисуй" единым для всех образом. Заменяемость и расширяемость, универсальность – основные цели Интерфейсов.
Добавлено через 1 минуту Интерфейсы НЕ могут содержать методы. Они только описывают сигнатуру.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: May 2011
Сообщений: 221
|
А разве не будет альтернативой вместо интерфейса создать другой класс, который будет расширяться?
|
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
Вообще, Wolsh хорошо донес суть, как, впрочем, и in4core.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Jun 2010
Сообщений: 189
|
Интерфейс удобен. А есть ли ситуации, при которых он необходим?
|
Часовой пояс GMT +4, время: 15:15. |
|
« Предыдущая тема | Следующая тема » |
|
|