読み方 : クラスへんすう
クラス変数【class variable】静的メンバ変数
別名 :static member variable/静的フィールド/static field/静的プロパティ/static property
クラス変数とは?

クラス変数はクラスの定義において宣言される変数の一つで、プログラムの実行時には、クラスがロードまたは初期化される段階でメモリ上に一つの領域が確保され、そのクラスに属するすべてのインスタンスから同一の値として参照される。あるインスタンスがクラス変数の値を変更すると、他のすべてのインスタンスから見た値も同時に変化する。
典型的な用途として、生成されたインスタンスの総数を追跡するカウンター変数が挙げられる。たとえば「ユーザー」クラスにクラス変数「総ユーザー数」を定義しておけば、インスタンスが生成されるたびにその値を増やすことで、どのインスタンスからも現在の総数を参照できる。定数の定義にも広く用いられ、クラス全体で共通して使う固定値をクラス変数として一か所にまとめる設計は可読性と保守性の向上に寄与する。
言語によって定義方法は異なる。Javaではstatic修飾子を付けて宣言するため「静的フィールド」「staticフィールド」とも呼ばれる。Pythonではクラス定義のブロック内かつメソッドの外側に変数を記述することでクラス変数として扱われる。クラスを継承した場合の挙動も言語によって異なり、親クラスに定義されたクラス変数は子クラスに継承されて同一の変数として共有される場合や、再定義によって独立した値を持つ場合がある。
これに対して、各インスタンスごとに独立した記憶領域を持つ変数は「インスタンス変数」という。「メンバ変数」「フィールド」「プロパティ」などと呼ばれ、同じ変数名でもインスタンスごとに別個の値を保持する。インスタンスに紐づく情報を管理したり、当座の処理に必要な値を保持する変数にはこちらが用いられる。