2009年3月25日水曜日

AS3で抽象メソッドっぽいこと

スズキです。

以前、AS3でのメソッドのオーバーライドに関して書きましたが、
http://suz-lab.blogspot.com/2009/03/as3.html
そこで、AS3には抽象クラス(メソッド)の仕組みが無いとぼやいていましたが、
それっぽいことを、下記のように実現することにしました。

--------【AS3】--------
package {
  public class NotOverriddenError extends Error {
    public function NotOverriddenError() {
      super("子クラスでオーバーライドして下さい。");
    }
  }
}
package {
  public class AbstractParent {
    public function AbstractParent {}
    public function hoge():void { throw new NotOverriddenError(); }
  }
}
--------

AbstractParentを継承して、hogeをオーバーライドせずにhogeを呼ぶと、
NotOverriddenErrorがスローされるってことです。

AS3のノウハウもたまってきたぞ。

--
http://suz-lab.blogspot.com/

0 コメント: