ActionScript スーパークラスのコンストラクタ呼出しタイミング
Javaだと子クラスのコンストラクタの先頭でしか親クラスのコンストラクタが呼べないけど、ActionScriptは子クラスのコンストラクタの任意の場所で親クラスのコンストラクタを呼べるみたいです。
[Java]
public class Parent { public Parent() { System.out.println("Parent constructor"); } } public class Child extends Parent { public Child() { super(); // ←宣言していなくても勝手にこの位置に挿入される System.out.println("Child constructor"); } } Child c = new Child();
(結果)
>Parent cunstructor
>Child cunstructor
Javaだと↓はNG。ActionScriptだとOK。
public class Child extends Parent { public Child() { System.out.println("Child cunstructor"); super(); // ←メソッドの先頭でしか呼び出せない } }
ActionScriptの場合でも、明示的にsuperを呼び出さない場合は、ちゃんと自動的にコンストラクタの先頭でsuperが呼び出される。
superの呼出しタイミングをコンストラクタの先頭以外にするのって、親が生まれる前に子ができる瞬間があるってことですね。