Macromedia Flash 5. Объектно - ориентированное программирование




Super - запуск конструкторов


После функции extends, использовать конструктор - как два байта переслать. Главное сделать следующее: передать аргументы конструкторам, которым они нужны, а затем запустить конструкторы в порядке сверху вниз по списку. Единственное, о чём нужно помнить, это то, что конструкторы по своей сущности не связаны друг с другом, в отличие, например, от прототипов. Так что нам придётся "взбираться" вверх по цепочке прототипов и на каждом уровне "возвращаться" назад к конструктору.

Как я уже говорил раньше, иногда полезно посмотреть на работу других объектно-ориентированных языков программирования, чтобы сравнить, "как там у них". JAVA использует ключевое слово super, которое выполняет в точности то, что нам сейчас нужно, и даже кое-что ещё. Так что думаю, оно заслуживает более детального рассмотрения. В JAVA ключевое слово 'super' используется для вызова конструктора родительного класса - если нужно, то вместе с аргументами. Для этого используется следующий синтаксис: super(arg0, arg1, ...). Есть одно ограничение, эта строка должна стоять самой первой в каждом конструкторе. Если где-то она пропущена, то по умолчанию автоматически принимается она же, но без аргументов. Вместо того, чтобы удалить себя, после того, как действие всех конструкторов истекло, её "жизнь" продолжается, теперь это указатель на родительский класс, что позволяет экземплярам вызывать перезаписанные методы с помощью выражения super.xxx( ).

Наше преимущество в том, что в ActionScript мы обладаем всеми функциями, которые выполняет ключевое слово super в JAVA. Возможно, мы немного озадачиваем пользователя двумя маленькими действиями (может ему и трудно, но нам-то какая разница!) Первое, вам необходимо использовать выражение this.super( ), а не просто super( ). Экземпляры просто обожают слово "this", когда о себе "рассказывают" в пределах обычной программы. Я бы сказал, им это нравится (здесь мне вспоминается одна фраза Оскара Уайлда: "Но довольно об этом. Что вы думаете обо мне?") В нашем случае они "разговаривают" о своей "сверх"-миссии. Так что придётся всё-таки писать this.super. Привыкайте! Смотрите на это, как на дополнительную функцию. Если бы не ключевое слово this, то процедура "super" в ActionScript была бы настолько похожа на аналогичную процедуру в JAVA, что пользователи стали бы забываться, а кое-кто и биться головой о стену.




Содержание  Назад  Вперед