Базовые типы должны быть полностью идентичны. Например, следующий код не компилируется, поскольку базовый тип объекта отличается от базового типа, объявленного для переменной (несмотря на то, что Sprite — подкласс класса DisplayObject).

Код AS3:
var v:Vector.<DisplayObject> = new Vector.<Sprite>();
Почитайте доки. Зачем же их вам пишут?
Основа там расписана как нельзя лучше.
Цитата:
Помимо ограничения, связанного с типом данных, класс Vector имеет другие ограничения, которые отличают его от класса Array:
* Вектор принадлежит к числу плотных массивов. В отличие от объекта Array, который может иметь значения с индексами 0 и 7 даже в том случае, когда на позицяих с 1 по 6 значений нет, Vector должен иметь значения (или значение null) на каждой позиции индекса.
* Вектор может иметь фиксированную длину. Это означает, что число содержащихся в нем элементов не может изменяться.
* Доступ к элементам вектора осуществляется с контролем границ. Вам никогда не удастся прочесть значение с индексом, превышающим индекс финального элемента (length - 1). Вам также не удастся задать значение, индекс которого превышает текущий последний индекс (иначе говоря, значение можно присваивать только с существующим индексом или с индексом [length]).
В результате этих ограничений экземпляр Vector имеет два основных преимущества перед экземпляром Array, все элементы которого представляют собой экземпляры одного класса:
* Производительность: доступ к массиву и итерация осуществляются гораздо быстрее при использовании экземпляра Vector, чем при использовании экземпляра Array.
* Безопасность типов: в строгом режиме компилятор может идентифицировать ошибки типов данных (например, присвоение вектору значения, имеющего неверный тип данных, или ожидание неверного типа данных при считывании значения из вектора). Учтите однако, что при использовании метода push() или unshift() для добавления значений в вектор типы данных для аргументов проверяются не во время компиляции, а во время выполнения.
|