Flash Builder で新しい actionscript クラスを開始するたびに、コンストラクターが次の行で開始されます。
super()
これは今まで見たことがなく、目的がないようです。削除すると、まったく同じムービーになります。
なぜ新しいクラスに挿入され、何をするのですか?
Flash Builder で新しい actionscript クラスを開始するたびに、コンストラクターが次の行で開始されます。
super()
これは今まで見たことがなく、目的がないようです。削除すると、まったく同じムービーになります。
なぜ新しいクラスに挿入され、何をするのですか?
super()
継承 (拡張) するクラスからコンストラクターを呼び出します。
継承された (基本) クラスのコンストラクターに必要なパラメーターがない場合は、それらをすべて一緒に省略でき、フラッシュはコンストラクター コードの前に自動的にそれを呼び出します。
super キーワードを使用して、基本クラスから他の関数 (パブリックまたはプロテクト) を呼び出すことができます。
super.myBaseClassMethod(); //would call the method 'myBaseClassMethod' from your base class even if you had an overriden method with in this class
例:
package {
public class BaseClass {
public function BaseClass(){
trace("Base Class Constructed");
}
public function someBaseMethod():void {
trace("some method called from base");
}
}
}
package {
public class MyClass extends BaseClass { //this class is extending the class above
public function MyClass():void {
trace("My Class constructed");
super();
someBaseMethod();
super.someBaseMethod();
}
override public function someBaseMethod():void {
trace("Override");
}
}
}
したがって、これを行う場合:
var tmp:MyClass = new MyClass();
あなたは得るでしょう:
"My Class constructed"
"Base Class Constructed"
"override"
"some method called from base"
super() を省略すると、次のようになります。
"Base Class Constructed"
"My Class constructed"
"override"
"some method called from base"
継承の一部として、superはメソッドまたはコンストラクターのスーパークラスまたは親バージョンを呼び出します。
メソッドまたはコンストラクターのスーパークラスまたは親バージョンを呼び出します。クラス コンストラクターの本体内で使用すると、super() ステートメントはコンストラクターのスーパークラス バージョンを呼び出します。スーパークラス コンストラクターの呼び出しには、正しい数の引数が必要です。スーパークラス コンストラクターは、明示的に呼び出すかどうかにかかわらず、常に呼び出されることに注意してください。明示的に呼び出さない場合、サブクラス コンストラクター本体の最初のステートメントの前に、引数のない呼び出しが自動的に挿入されます。つまり、サブクラスでコンストラクター関数を定義し、スーパークラス コンストラクターが 1 つ以上の引数を取る場合、正しい数の引数でスーパークラス コンストラクターを明示的に呼び出す必要があります。そうしないと、エラーが発生します。ただし、スーパークラス コンストラクターの呼び出しは、
インスタンス メソッドの本体で使用する場合、super をドット (.) 演算子と共に使用してメソッドのスーパークラス バージョンを呼び出し、オプションで引数 (arg1 ... argN) をスーパークラス メソッドに渡すことができます。これは、スーパークラス メソッドに追加の動作を追加するだけでなく、スーパークラス メソッドを呼び出して元の動作を実行するサブクラス メソッドを作成する場合に役立ちます。
静的メソッドで super ステートメントを使用することはできません。
ActionScript では、クラスは としてマークされていない他の基本クラスを拡張できますfinal
。
たとえば、MovieClip
継承は次のようになります。
スプライト > DisplayObjectContainer > InteractiveObject > DisplayObject > EventDispatcher > オブジェクト
を呼び出すことによりsuper()
、親コンストラクターがいつ呼び出されるかを制御します。
package
{
import flash.display.MovieClip;
public class ExampleMovieClip extends MovieClip
{
public function ExampleMovieClip()
{
super(); // MovieClip's constructor is called
}
}
}