|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
А можно ли не перекрывать метод, а добавить в него ещё команды?
Здравствуйте.
Можно ли осуществить такую идею? |
|
|||||
если вы про перегрузку методов, то в as3 ее нет.
__________________
местонахождение |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
Цитата:
Я его пытаюсь понять так. В подклассе создаем функцию с именем method(). Такая же функция есть и в суперклассе. Вызываем функцию суперкласса командой super.method(); Это нам ничего не дает, просто тупо выполнилась функция суперкласса. Зачем, непонятно. Потом мы вызываем некий метод anotherCommand(), который, предположительно, есть в суперклассе. И... А почему бы его просто так не вызвать? Где подвох? Мозайка не складывается. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вопрос был — как к уже описанному методу добавить еще каких-то действий.
super.method() выполняет код, который содержит этот "уже описанный метод", а anotherCommand это что угодно, что нужно "добавить", выполнить после. И он не в суперклассе (было бы "super.anotherMethod()"). Он вообще не обязан быть где-то, это просто следующий, дополнительный, блок кода.
__________________
Reality.getBounds(this); |
|
|||||
В данном случае это переопределение родительского метода method. Метода anotherCommand у родителя нет, поэтому логика выполнения следующая:
Допустим у нас есть класс Human, у которого есть метод eat(). С помощью этого метода человек ест еду. Но у нас есть уникальный человек Вася, который ест немного не так как все люди - он выпивает стакан водки после каждой трапезы. В итоге получаем: public class Human { public function Human() { } public function eat():void { trace("Омномном"); } } public class Vasya extends Human { public function Vasya() { } override public function eat():void { super.eat(); trace("Буль буль буль"); } } Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ну и, конечно, можно "вшить" в суперметод вызов дополнительного метода, который в суперклассе просто оставить пустым, а в наследниках "перекрывать" с нужным наполнением.
Можно так же в конце метода посылать событие типа "я закончил", подписываться на него и в обработчике выполнять дополнительные действия. Непонятен сам запрет на оверрайд. Просто так запихнуть кусок кода в уже существующий метод конечно же нельзя.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
Wolsh, KumoKairo, понятно, прикольно.
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Всем огромное спасибо.
|
Часовой пояс GMT +4, время: 09:21. |
|
« Предыдущая тема | Следующая тема » |
|
|