class classname
{
// メンバやメンバメソッドやメンバプロパティを記述
function classname() // コンストラクタ
{
}
function finalize()
{
}
}
例:
class test
{
function test()
{
// コンストラクタ
// ここに、オブジェクトが作成されるときに処理する内容を書く
variable = 0;
}
function finalize()
{
// finalize メソッド
// ここに、オブジェクトが破棄されるときに処理する内容を書く
}
function method1()
{
// メソッド
System.inform(variable);
}
var variable; // メンバ変数
property prop // メンバプロパティ
{
getter() { return variable; }
}
}
例:
class Test
{
var variable1 = getValue(); // メンバ変数の初期化
function Test(arg1, arg2) // コンストラクタ
{
// ここでは new 演算子で指定した引数が arg1 と arg2 にわたっている
}
}
var newobject = new Test(1, 2); // 引数に 1, 2 を渡して test クラスのオブジェクトを作成
例:
class Test
{
function Test() // コンストラクタ
{
}
function func()
{
return new Test(); // エラー
}
}
例:
class Test
{
function Test() // コンストラクタ
{
}
function func()
{
return new global.Test(); // これならば OK
}
}
例:
class Test
{
var variable;
function Test()
{
// コンストラクタ
variable = new AnotherClass();
}
function finalize()
{
// finalize メソッドは無効化された時に呼ばれる
invalidate variable;
}
}
var object = new Test(); // オブジェクトを作成
(略)
invalidate object; // オブジェクトを無効化
例:
var obj = new FooBarClass(); // オブジェクトを作成
obj.method(); // オブジェクトのメソッドを普通に呼び出す
var objmethod = obj.method; // オブジェクトのメソッドへの参照を objmethod に代入
objmethod(); // objmethod を呼び出すが、obj.method() と同じく、obj に対するアクセスとなる
例:
(objmethod incontextof obj2)(); // obj2 に対する操作になる
(objmethod incontextof this)(); // this に対する操作になる
例:
class Class1 // スーパークラス
{
function Class1() // Class1 コンストラクタ
{
}
function finalize() // Class1 finalize
{
}
function method1() // method1
{
}
}
class Class2 extends Class1
{
function Class2() // Class2 コンストラクタ
{
super.Class1(); // Class1 コンストラクタを呼ぶ
}
function finalize() // Class2 finalize
{
super.finalize();
}
}
var obj = new Class2(); // Class2 オブジェクトを作成
obj.method1(); // Class2 は Class1 の method1 を継承しているので使用することができる
例:
class SubClass extends ClassA, ClassB
{
function SubClass() // SubClass コンストラクタ
{
ClassA(); // ClassA コンストラクタを呼ぶ
ClassB(); // ClassB コンストラクタを呼ぶ
}
function finalize() // Class2 finalize
{
global.ClassA.finalize();
global.ClassB.finalize();
}
}
例:
class Class1 // スーパークラス
{
function Class1() // Class1 コンストラクタ
{
}
function finalize() // Class1 finalize
{
}
function method1() // method1
{
(略)
}
}
class Class2 extends Class1
{
function Class2() // Class2 コンストラクタ
{
super.Class1(); // Class1 コンストラクタを呼ぶ
}
function finalize() // Class2 finalize
{
super.finalize();
}
function method1() // Class1.method1 をオーバーライド
{
(略)
if(略) return super.method1();
(略)
}
}
var obj = new Class2(); // Class2 オブジェクトを作成
obj.method1(); // Class2 の method1 が呼ばれる