本節では[[スクリプト言語]]である[[Ruby]]でクラス変数の概略を記す。
<syntaxhighlight lang="ruby">
<pre><nowiki>
# Ruby Script
class A
b.printClassVariable #=> Value is changed
c.printClassVariable #=> Value is changed
</syntaxhighlight>
</nowiki></pre>
== Java ==
下記の例において、2行目で宣言されているfooは'''クラス変数'''であり、3行目で宣言されているvarは[[インスタンス変数]]である。
冒頭でも説明されているように、'''クラス変数'''は同一[[クラス (コンピュータ)|クラス]]と[[サブクラス (計算機科学)|派生クラス]]で共有される。ただし、クラス変数が<code>private</code>の場合や、[[パッケージ (Java)|パッケージ]]プライベートで派生クラスがパッケージ外にありそのクラスがパッケージプライベートである場合は、派生クラスから参照することはできない。
<syntaxhighlight lang="java">
class Hoge {
static int varfoo; //インスタンクラス変数
▲ static int foovar; // クラインスタンス変数
}
</syntaxhighlight>
このHogeクラスを実際に使用する例:
<syntaxhighlight lang="java">
public class Main {
public class Main { public static void main(String[] args){
Hoge.foo = 100; //Hogeクラスのクラス変数に100を代入
Hoge hoge = new Hoge(); //[[インスタンス]]を生成
hoge.var = 20; // 作成したhogeインスタンスの[[インスタンス変数]]varに20を代入
System.out.println("Hoge.foo = " + Hoge.foo); //fooを表示
System.out.println("hoge.var = " + hoge.var); //varを表示
//hogeインスタンスでクラス変数fooを読むこともできる(ただし、推奨されない文法)。
System.out.println("hoge.foo = " + hoge.foo);
hoge.foo = 700; //クラス変数fooに700を代入
hoge.var = 800; //hogeインスタンスのインスタンス変数varに800を代入
System.out.println("Hoge.foo = " + Hoge.foo); //Hoge.fooを表示
System.out.println("hoge.foo = " + hoge.foo); //hoge.fooを表示
System.out.println("hoge.var = " + hoge.var); //hoge.varを表示
Hoge another = new Hoge(); //インスタンスをもう一つ生成
another.foo = 777; //クラス変数fooに777を代入
another.var = 888; //anotherインスタンスのインスタンス変数varに888を代入
System.out.println("another.foo = " + another.foo); //fooを表示
System.out.println("another.var = " + another.var); //varを表示
System.out.println("Hoge.foo = " + Hoge.foo); //Hoge.fooを表示
System.out.println("hoge.foo = " + hoge.foo); //fooを表示
System.out.println("hoge.var = " + hoge.var); //varを表示
}
}
</syntaxhighlight>
実行結果
|