Можно сделать через Proxy наследника, но интересно бы узнать зачем?
Единственным полезным примененим таких переопределений я бы посчитал развер рассылку событий об обновлении данных, а для toString, почему неудобно просто использовать статическую утилиту MyUtils.vectorToString(value:Vector.<*>); ?
Вот например наследник от Vector.<Point>. Сохраняяет все мотоды Vector, но переопределяет toString;
МОжно подумать еще над передачей типа.

Код AS3:
package {
import flash.display.Sprite;
import flash.geom.Point;
public class ProxyExample extends Sprite
{
public function ProxyExample()
{
var vector:ProxyVector = new ProxyVector();
vector.push(new Point(Math.random(), Math.random()));
vector.push(new Point(Math.random(), Math.random()));
vector.push(new Point(Math.random(), Math.random()));
vector.push(new Point(Math.random(), Math.random()));
vector.push(new Point(Math.random(), Math.random()));
trace(vector.length);//Методы Vector сохранились
trace(vector.toString());
/*Выводит :
item [0] = (x=0.5526889930479228, y=0.4928265390917659)
item [1] = (x=0.007704821415245533, y=0.5104764206334949)
item [2] = (x=0.5938579649664462, y=0.913416794501245)
item [3] = (x=0.19566342374309897, y=0.6506094681099057)
item [4] = (x=0.4772168640047312, y=0.5084680668078363) */
}
}
}
import flash.geom.Point;
import flash.utils.Proxy;
import flash.utils.flash_proxy;
dynamic class ProxyVector extends Proxy {
private var _item:Vector.<Point>;
public function ProxyVector() {
_item = new Vector.<Point>();
}
override flash_proxy function callProperty(methodName:*, ... args):* {
var res:*;
if (methodName.toString() == 'toString')
{
var output:String = "";
var len:uint = _item.length;
for (var i:uint = 0; i < len; i++)
{
output += 'item [' + String(i) + '] = ' + _item[i].toString() + "\n";
}
res = output;
}
else
{
var _itemObj:Object = _item as Object;
res = _itemObj[methodName].apply(_item, args);
}
return res;
}
override flash_proxy function getProperty(name:*):* {
return _item[name];
}
override flash_proxy function setProperty(name:*, value:*):void {
_item[name] = value;
}
}
Мне кажется лучше просто завернуть его в обертку, и обращаться просто на точку длиннее vectorCont.item[i];
Прикольно как в разных языках по разному происходит эволюция, то от чего в AS с трудом избавились, в других языках воспринимают за достижение.
Или прикольно было набдюдать как СилверЛайтчики гордились тем что у них компонент на векторах, хотя без строкхинтинга с небрежно размазанными шрифтами, а во флеше очень радовлись когда появилась возможность работы с bitmapData вместо вектора
