Platform: All
Version: Flash 9 and above
シンタックス
[dynamic] [public | internal] [final] class className [ extends superClass ] [ implements interfaceName[, interfaceName... ] ] {
// クラス定義を記述
}
引数
className:Class ― クラスの完全修飾名。
説明
クラスを定義して、定義したメソッドやプロパティが共有されたオブジェクトをインスタンス化できるようにします。たとえば、インボイストラッキングシステムを開発している場合、Invoiceクラスを作成してインボイスの備えるべきすべてのメソッドやプロパティを定義することができます。そして、new Invoice()コマンドを使って、Invoiceオブジェクトを作成します。
各ActionScriptソースファイルは、publicクラスをひとつだけ備えることができます。同じファイル内に他にpublicでないクラスがある場合には、publicクラスは他のすべてのクラスの下に配置しなければなりません。ファイル内の最後のクラスの名前は、そのクラスを備えるActionScriptソースファイルの名前と一致する必要があります。ソースファイルの名前は、クラス名に拡張子.asをつけたものとなります。たとえば、クラスにStudentという名前をつけたら、そのクラスを定義したファイルはStudent.asという名前でなければなりません。
クラス定義を、入れ子にすることはできません。つまり、クラス定義内に、さらにクラスを追加して定義することはできません。
オブジェクトがランタイムに動的プロパティを加えたりアクセスできることを示すには、classステートメントの前にdynamicキーワードを添えます。クラスがinterfaceを実装することを宣言するには、implementsキーワードを用います。クラスのサブクラスをつくるには、extendsキーワードを使います(クラスは、ひとつだけクラスを拡張できます。ただし、複数のinterfaceを実装することは可能です)。implementsとextnedsは、ひとつのステートメント中に使うことができます。つぎの例は、implementsとextendsキーワードの典型的な使い方を示します。
class C implements Interface_i, Interface_j // OK
class C extends Class_d implements Interface_i, Interface_j // OK
class C extends Class_d, Class_e // NG
|
例
つぎの例は、Plantというクラスを作成します。Plantのコンストラクタは、ふたつの引数を取ります。
// ファイル名 Plant.as
package {
public class Plant {
// プロパティ名と型を定義
private var _leafType:String;
private var _bloomSeason:String;
// 以下の行はコンストラクタ
// 関数がクラスと同名
public function Plant(param_leafType:String, param_bloomSeason:String) {
// 新規Plantオブジェクト作成時に引数をプロパティに設定
_leafType = param_leafType;
_bloomSeason = param_bloomSeason;
}
// プロパティ値を返すメソッドの作成を推奨
// クラスのプロパティを直接参照することは避ける
public function get leafType():String {
return _leafType;
}
public function get bloomSeason():String {
return _bloomSeason;
}
}
}
|
スクリプトで、new演算子を用いてPlantオブジェクトを作成します。
var pineTree:Plant = new Plant("Evergreen", "N/A");
// Confirm parameters were passed correctly
trace(pineTree.leafType);
trace(pineTree.bloomSeason);
|
Player
ActionScript 3.0/Flash Player 9以降。
関連項目
dynamic extends final internal public
出典
[ActionScript 3.0 Language Reference] > [Statements, Keywords & Directives] > [class definition keyword]
作成者: 野中文雄
作成日: 2006年8月27日