« importの利用 | メイン | クラスメンバーにアクセスする »
クラスメンバーとインスタンスメンバー
クラスのプロパティとメソッドをメンバーと呼びます。クラスのメンバーにはクラスメンバーとインスタンスメンバーがあります。クラスメンバーはstaticキーワードを使って作成することから静的メンバー(静的メソッドと静的プロパティ)とも呼びます。
クラスから作ったインスタンスごとにインスタンスメンバーが作られるのに対し、クラスメンバーは1回しか作られずクラス自身に割り当てられます。そこでクラスのすべてのインスタンスで共通して利用するプロパティやメソッドはクラスメンバーとして作ります。たとえば、インスタンスが何個作られているかというカウンタや共通の割引率などはクラスメンバーにするほうが合理的です。
次のTeamクラスではインスタンスの通し番号をクラスプロパティのseqNo変数でカウントアップし、同時に各インスタンスの番号をインスタンスプロパティのmyNo変数に登録していきます。
sample→ex04-02/class_memberフォルダ
クラス定義ファイル:Team.as
class Team {
	//クラスメンバー
	static var seqNo:Number = 0;
	//インスタンスメンバー
	var myNo:Number;
	var myName:String;
	//コンストラクタ
	function Team(memname:String) {
		myNo = ++seqNo;
		myName = memname;
	}
	//自分の情報
	function who():String {
		var info = myNo + "-" + myName;
		return info;
	}
}
ではTeamクラスをテストしてみましょう。Flashムービーを作り、フレーム1のフレームアクションに次のスクリプトを書きます。名前を引数に指定してTeamクラスのインスタンスを作ります。そしてそれぞれのインスタンスのmyNoとmyNameの値をwho()関数で調べると、myNoには各インスタンスの通し番号が入っていることがわかります。
フレームアクション:teamtest.fla
var yo:Team = new Team("大重美幸");
var ty:Team = new Team("山本太郎");
trace(yo.who()); //出力→ 1-大重美幸
trace(ty.who()); //出力→ 2-山本太郎
投稿者 oshige : 2005年2月22日 11:24