ГлавнаяActionScript 3 — «100 советов» › Ключевое слово override

Ключевое слово override

June 19th, 2006
Перекрытием (overriding) называется переопределение метода в классе, который в противном случае был бы унаследован. Новый метод будет использоваться вместо унаследованного (хотя унаследованный метод остается доступен с использованием super).

В ActionScript 3, когда вы перекрываете метод или свойство родительского класса, вы должны использовать аттрибут override. Он указывает на то, что создаваемый вами член класса будет перекрывать тот, который иначе был бы унаследован. Если вы не укажете override для метода, который уже существует в родительском классе, возникнет ошибка компиляции.

Пример:

Код:
package { import flash.display.*; class MySprite extends Sprite { private var children:Array = new Array(); public function MySprite() { } public override function addChild(child:DisplayObject):DisplayObject { children.push(child); super.addChild(child); return child; } } }

Т.к. addChild уже существует в родительском классе Sprite, необходимо использовать override для успешного определения нового метода addChild, который добавляет кроме прочего переданный child в массив children.

Обратите внимание, что описание метода должно соответствовать перекрываемому

Перекрытие работает как с обычными методами класса, так и с getter/setter методами (свойствами), однако оно не будет работать ни с чем из нижеперечисленного:

  • Переменные
  • Константы
  • Статические методы
  • Методы, которые не унаследованы
  • Методы, реализующие интерфейс
  • Унаследованные методы, отмеченные как финальные (final) в родительском классе

Обратите также внимание, что перекрытие не требуется для методов, которые наследуются непосредственно от класса Object. Это:

  • hasOwnProperty
  • isPrototypeOf
  • propertyIsEnumerable
  • setPropertyIsEnumerable
  • toString
  • valueOf

Эти методы добавляются динамически и не являются частью действительного определения класса. Ключевое слово override используется только для методов, которые присутствуют в исходном описании класса.

Однако, если расширяется класс, в котором приведенные выше методы являются частью его описания, ключевое слово override необходимо. Например, если вы расширяете класс Object, вам не нужно использовать override для метода toString. Но если вы расширяете класс Sprite, вам потребуется перекрывать toString, т.к. класс Sprite имеет в своем описании собственный toString.

Категория: ActionScript 3 — «100 советов» Ярлыки: ,

Смотрите также

Абстрактные классы Использование прототипов (prototype)
  1. Пока без комментариев.
  1. Пока нету.