「クラス変数」の版間の差分

用途
m (改名提案を撤回)
(用途)
この例ではインスタンス変数との違いを示すためにインスタンス変数varを用意した。
クラス変数Hoge.fooとhoge.fooとanother.fooはすべて同一のものであるためどれかに値を代入するとどれを参照しても代入された値となる。この例ではまずHoge.fooに100を代入した。当然100を出力する。hoge.fooはHoge.fooとクラス変数を参照しているため100を出力する。次にhoge.fooに700を代入する。Hoge.fooもhoge.fooもどちらも700を出力する。次に新たにインスタンスanotherを生成する。another.fooに777を代入しanother.varには888を代入する。このとき、当然another.fooは777、another.varは888を出力する。ただし、Hoge.foo、hoge.fooの値は、Hogeクラスで共有されているクラス変数であるためどちらも777になっている。hoge.varは異なるインスタンスの変数であるため800のままである。
 
== 用途 ==
クラス変数の用途は、[[定数]]宣言、[[メモリ]]節約、[[パフォーマンス]]改善に使われることがある。[[インスタンス変数]]のように[[インスタンス]]を生成するたびに、余分な[[フィールド (計算機科学)|フィールド]]を無駄に消費するコストを押さえる為に使われることがある。[[Singleton パターン]]でシングルトンオブジェクトを生成するためにも使われる。
 
 
3,513

回編集