К сожалению, ActionScript 3 НЕ поддерживает абстрактные классы (экземпляры которых нельзя создать, а можно только унаследовать). Т.е. вы не можете создавать ваши собственные абстрактные классы. Однако, обратите внимание, что некоторые из внутренних классов ActionScript сами по себе являются абстрактными. Эти классы включают:
- DisplayObject
- InteractiveObject
- DisplayObjectContainer
- Graphics
Как и с абстрактными классами вы не можете создавать их экземпляры с помощью ключевого слова new.
Код:
var myObj:InteractiveObject = new InteractiveObject(); // ERROR
Однако, в дополнение к этому, в ActionScript вы также не можете непосредственно расширять эти классы и создавать экземпляры таких подклассов
Код:
package {
import flash.display.DisplayObject;
public class MyDisplay extends DisplayObject{
public function MyDisplay (){
// ERROR
}
}
}
Если вы попытаетесь унаследовать один из них и создать экземпляр своего наследника, вы получите тот же Argument Error, что и при попытке создать экземпляр одного из этих классов непосредственно.
Вместо этого вам необходимо расширять те внутренние классы, которые уже являются наследниками этих классов. К примеру, если вы хотите расширить DisplayObject, вы можете вместо этого расширить Shape, легкий встроенный класс, унаследованный от DisplayObject.