« 2008年01月 | メイン | 2008年05月 »

2008年04月 アーカイブ

2008年04月02日

継承とアクセス修飾子

as3の継承とアクセス修飾子の関係があいまいだったので、ちょいと調べたのでメモ。

as3のアクセス修飾子には、
・private
・protected
・internal
・public
の4つがある。

■private修飾子
privateは、そのクラスのみでアクセス可能。
継承した子孫クラスからもアクセスできない。

■protected
同じクラスとその派生クラス(継承したクラス)までアクセス可能。
継承したクラスにアクセスした場合のもっとも厳しい修飾子はこれになる。

■internal
同一パッケージ内からアクセス可能。

■public
どこからでもアクセス可能。

継承した場合に、コンストラクタ内でsuper()を行わずに継承したクラスを明示的に初期化しないと、
子孫クラスのコンストラクが終了したタイミングで、引数無しとしてsuper()が暗黙的に呼び出される。
よって、継承するクラスのコンストラクタに引数が必要で、デフォルト値も設定されていない場合には、必ず継承したクラスのコンストラクタでsuper()を実行して継承したクラスを初期化する必要がある。
ちなみに、super()の場所はコンストラクタ内であればどこでもかまわない。(as2ではコンストラクタの先頭で実行する必要があった。)

■override
overrideは、親クラスのメソッドを上書きたい時に用いる。
この時親クラスのメソッドのアクセス修飾子は、protected以上の必要がある。

override アクセス修飾子 function methodName():*{
}

上書きたいメソッドは、
・アクセス修飾子
・関数名
・引数の数と型
・戻り値の型
上記4つが一致している必要がある。

親クラスのメソッドを実行したい時は、super.methodName()で呼び出せる。
プロパティには、overrideは使えない。

継承されていれば、親クラスのstatic宣言されたメソッド、プロパティにもprotected以上ならアクセスできる。

とりあえずこんなかんじ。

2008年04月04日

バブルソート

バブルソートを調べてみたのでメモ。
バブルソートってのは、常に最後の二つを比較して、左の方が大きかったら要素を交換する。
それを要素分ひたすら繰り返すってことなんだな。多分。
以下プログラム。

var arr:Array = [4,6,2,9,1,90,22,89,7,11,2];

for ( var i:Number = 0; i < arr.length; i++ ){
for (var ii:Number = arr.length; ii >=1; ii-- ){
if(arr[ii] < arr[ii-1]){
var tmp_num:Number = arr[ii-1];
arr[ii-1] = arr[ii];
arr[ii] = tmp_num;
}
}
}
trace(arr);
出力結果:1,2,2,4,6,7,9,11,22,89,90

About 2008年04月

2008年04月にブログ「godagoda.net」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2008年01月です。

次のアーカイブは2008年05月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。