staticメンバは、インスタンスに個別に定義されるメンバではなく、ク ラスにその領域が確保されるメンバです。したがってクラス宣言式が実行され た時点から、その領域が存在します。
static <メンバ名> ;
static <メンバ名>, <メンバ名>, <メンバ名> ;
staticメンバは、クラス宣言の時点から存在するので、クラス宣言式中 に初期化式を書くことができます。
static a = 10, str1 = "Hello", str2 = "World" ;
staticメンバも、publicメンバ同様インスタンスからメンバ選択 演算子を用いてアクセスすることができます。
class Point {
static coord_orig_x = 0 ;
static coord_orig_y = 0 ;
private x, y ;
}
var pt1, pt2 ;
pt1 = new Point ;
pt2 = new Point ;
println ("origin = (", pt1->coord_orig_x, ", ", pt1->coord_orig_y, ")"); // (0, 0)
pt2->coord_orig_x = 100 ;
pt2->coord_orig_y = 200 ;
println ("origin = (", pt1->coord_orig_x, ", ", pt1->coord_orig_y, ")"); // (100, 200)
この例では、pt1->coord_orig_x と、pt2->coord_orig_x は全く同 じものを参照しています。
また、staticメンバは、クラス宣言時から存在するので、下記のように クラスに対してメンバ選択演算子を摘要して直接アクセスできます。
Point->coord_orig_x = 50 ;
Point->coord_orig_y = 50 ;