「Section08-01 クラス定義の構造」の「クラスメンバーを定義する」(p.245)にサンプルを追加します。このサンプルのポイントは、コンストラクタにおいてクラスプロパティfriendListにインスタンスの参照であるthisを登録することで、作ったインスタンスを管理しているところです。
[:script:]Friend4クラスの定義
[:script:]Friend4クラスの定義
package { public class Friend4 { //クラスプロパティ public static var seqNo:uint; public static var friendList:Array=new Array(); //インスタンスプロパティ public var no:uint; public var name:String; public var age:uint; //コンストラクタ public function Friend4(na:String,ag:uint) { no= ++seqNo; name=na; age=ag; //インスタンスのリストに参照を保管する friendList.push(this); } // // クラスメソッド // //平均年齢を求める public static function getAgeAverage():Number { if (friendList.length==0) { return 0; } else { var ageSum:uint; //年齢の合計を出す for (var i:int=0; i<friendList.length; i++) { var friend:Friend4=friendList[i]; ageSum+=friend.age; } //平均を計算する var ave:Number=ageSum/friendList.length; //小数点2位で四捨五入する ave=Math.round(ave*10)/10; return ave; } } //最年長を求める public static function getOldestProfile():String { if (friendList.length==0) { return null; } else { //friendListの複製 var tmpList:Array=friendList.slice(); //年齢でソートする tmpList.sortOn("age",Array.NUMERIC); //最後の人を取り出す var oldest:Friend4=tmpList[tmpList.length-1]; //プロフィールを返す(インスタンスメソッドの実行) return oldest.getProfile(); } } // // インスタンスメソッド // //プロフィールを返す public function getProfile():String { var info:String="no."+no+" "+name+"、"+age+"歳です。"; return info; } } }→ファイル一式をダウンロードする。