AS3 - 抽象类

Luc*_*hez 31 oop abstract-class actionscript-3

我怎样才能很好地在AS3中创建一个抽象类?

我试过这个:

public class AnAbstractClass
{
    public function toBeImplemented():void
    {
        throw new NotImplementedError(); // I've created this error
    }
}

public class AnConcreteClass extends AnAbstractClass
{
    override public function toBeImplemented():void
    {
        // implementation...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是......我不喜欢这样.并且没有编译时错误.

bit*_*com 12

package 
{
    import flash.errors.IllegalOperationError;
    import flash.utils.getDefinitionByName;
    import flash.utils.getQualifiedClassName;
    import flash.utils.getQualifiedSuperclassName;

    public class AbstractClass 
    {
        public function AbstractClass()
        {
            inspectAbstract();
        }

        private function inspectAbstract():void 
        {
            var className : String = getQualifiedClassName(this);
            if (getDefinitionByName(className) == AbstractClass ) 
            {
                throw new ArgumentError(
                getQualifiedClassName(this) + "Class can not be instantiated.");
            }
        }

        public function foo():void
        {
            throw new IllegalOperationError("Must override Concreate Class"); 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
package
{
    public class ConcreteClass extends AbstractClass
    {
        public function ConcreteClass()
        {
            super();
        }

        override public function foo() : void 
        {
            trace("Implemented");
        }
   }
}
Run Code Online (Sandbox Code Playgroud)


The*_*o.T 6

在AS3中,只需使用接口来确保所有函数都在编译时实现.我知道它有所不同,但是就像上面的一个例子那样.