gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

memo

んと…なんかclassなのにオーバライド出来ないとか何とかって微かに耳にする…大丈夫でけた(笑


普通に書くと怒られるので。

override public function foo():String

ってな感じで、明示的に指定する必要があるぽ。
上位へのアクセスはsuper演算子が有効なので。

super.foo()

などの書式をもちう。


で…
http://livedocs.adobe.com/flex/2_jp/docs/00001638.html

Flex は自動的にコンストラクタ内で super() メソッドを呼び出してスーパークラスのコンストラクタを実行しますが、メソッドオーバーライドでは明示的に super.methodName() を呼び出す必要があります。明示的に呼び出さないと、スーパークラスのメソッドは実行されません。

とあるはずなんだけど。
別のURIにあるサンプルには
http://livedocs.adobe.com/flex/201_jp/html/ascomponents_147_12.html

package myComponents
{
    import mx.controls.Alert;
    import mx.containers.HBox;
    import flash.display.DisplayObject;

    public class HBoxWithAlert extends HBox
    {
        // Define the constructor.  
        public function HBoxWithAlert() 
        {
            super();
        }       

      // Define the override.
      override public function addChild(child:DisplayObject):DisplayObject {
        
            // Call super.addChild().
            super.addChild(child); 
            
            // Open the Alert box.
            Alert.show("Item added successfully");

            return child;
        }
    }
}

ってな感じで、コンストラクタでも明示的にcallしてたりする。
とりあえず書いておいたほうがいいのかな?
面倒なんで未テストw


…よかった「オーバライド出来ない」とかが真実だったら結構どん引きするところだった orz