ActionScript-3 не может иметь несколько конструкторов?
У меня
public function Shard() {
}
public function Shard(x:Number, y:Number, vx:Number, vy:Number, rotation:Number, spin:Number)
{
...
}
И я получил второй конструктор:
Множественные определения конструктора найденный. Конструктор не может быть определен в код.
Итак, ActionScript-3 не может иметь несколько конструкторов?
Ответы
Ответ 1
Нет, у вас не может быть несколько contructor ни одна и та же функция с другой сигнатурой, но вы можете использовать аргументы по умолчанию:
public function Shard(x:Number=NaN, y:Number=NaN) {
//...
}
то вы можете вызвать new Shard()
или new Shard(100)
или new Shard(100, 200)
или вы также можете использовать переменные аргументы:
public function Shard(...args){
if (args.length==0) {
//...
} else {
//...
var firstArg:Object=args[0];
//...
}
}
Ответ 2
Это даже шире. AS3 не имеет никакой поддержки для перегрузки функций.
Вы можете моделировать внешний вид нескольких конструкторов с параметрами по умолчанию и/или динамически отправлять параметры различным методам init
. В качестве альтернативы, могут быть созданы специализированные объекты или статические методы создания.