削除された内容 追加された内容
RedBot (会話 | 投稿記録)
m r2.7.2) (ロボットによる 追加: ca:Variable de classe
MihailJP (会話 | 投稿記録)
m <syntaxhighlight>
8行目:
本節では[[スクリプト言語]]である[[Ruby]]でクラス変数の概略を記す。
 
<syntaxhighlight lang="ruby">
<pre><nowiki>
# Ruby Script
class A
41行目:
b.printClassVariable #=> Value is changed
c.printClassVariable #=> Value is changed
</syntaxhighlight>
</nowiki></pre>
 
== Java ==
48行目:
下記の例において、2行目で宣言されているfooは'''クラス変数'''であり、3行目で宣言されているvarは[[インスタンス変数]]である。
冒頭でも説明されているように、'''クラス変数'''は同一[[クラス (コンピュータ)|クラス]]と[[サブクラス (計算機科学)|派生クラス]]で共有される。ただし、クラス変数が<code>private</code>の場合や、[[パッケージ (Java)|パッケージ]]プライベートで派生クラスがパッケージ外にありそのクラスがパッケージプライベートである場合は、派生クラスから参照することはできない。
<syntaxhighlight lang="java">
class Hoge {
static int foo; //クラス変数
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>
 
実行結果