![]() |
А можно ли не перекрывать метод, а добавить в него ещё команды?
Здравствуйте.
Можно ли осуществить такую идею? |
если вы про перегрузку методов, то в as3 ее нет.
|
Код AS3:
|
Цитата:
Нет, нельзя. Только как предложил Wolsh. |
Цитата:
Я его пытаюсь понять так. В подклассе создаем функцию с именем method(). Такая же функция есть и в суперклассе. Вызываем функцию суперкласса командой super.method(); Это нам ничего не дает, просто тупо выполнилась функция суперкласса. Зачем, непонятно. Потом мы вызываем некий метод anotherCommand(), который, предположительно, есть в суперклассе. И... А почему бы его просто так не вызвать? Где подвох? Мозайка не складывается. |
Вопрос был — как к уже описанному методу добавить еще каких-то действий.
super.method() выполняет код, который содержит этот "уже описанный метод", а anotherCommand это что угодно, что нужно "добавить", выполнить после. И он не в суперклассе (было бы "super.anotherMethod()"). Он вообще не обязан быть где-то, это просто следующий, дополнительный, блок кода. |
В данном случае это переопределение родительского метода method. Метода anotherCommand у родителя нет, поэтому логика выполнения следующая:
Допустим у нас есть класс Human, у которого есть метод eat(). С помощью этого метода человек ест еду. Но у нас есть уникальный человек Вася, который ест немного не так как все люди - он выпивает стакан водки после каждой трапезы. В итоге получаем: Код AS3:
Код AS3:
Цитата:
|
Ну и, конечно, можно "вшить" в суперметод вызов дополнительного метода, который в суперклассе просто оставить пустым, а в наследниках "перекрывать" с нужным наполнением.
Можно так же в конце метода посылать событие типа "я закончил", подписываться на него и в обработчике выполнять дополнительные действия. Непонятен сам запрет на оверрайд. Просто так запихнуть кусок кода в уже существующий метод конечно же нельзя. |
Wolsh, KumoKairo, понятно, прикольно.
|
Всем огромное спасибо.
|
| Часовой пояс GMT +4, время: 07:06. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.