クラス内の変数や関数にstaticを付ける事ができます。
変数にstaticを付けると静的メンバ変数となります。
関数にstaticを付けると静的メンバ関数となります。
ここでは、静的メンバ関数の説明をしています。
静的メンバ変数の説明はコチラです。
静的メンバ関数
クラスの中にstatic付きで定義された関数は、
静的メンバ関数となります。
クラスメソッドやstaticメソッドと呼ぶ場合もあります。
静的メンバ関数の特徴は以下の通りです。
静的メンバ関数には、thisが渡されません。(thisについてはコチラ)
そのため、通常、静的メンバ関数内から
同クラス内のメンバ変数にアクセスする事ができません。
ただ、静的メンバ変数へはアクセス可能です。
また、同クラス内のstaticが付かないメンバ関数にもアクセスできません。
このような制限があるため、
通常、静的メンバ関数では、
静的メンバ変数のみを扱う使い方が一般的な方法です。
記述例
class Cstatic {
public static int sdata;
public static void show() {
System.out.printf("sdataの値は%dです\n", sdata);
}
}
使用例
class Cstatic {
public static int sdata;
public static void show() {
System.out.printf("sdataの値は%dです\n", sdata);
}
}
public class Cmain {
public static void main() [
Cstatic a = new Cstatic();
Cstatic b = new Cstatic();
a.sdata = 10;
b.sdata = 20;
Cstatic::sdata = 30;
a.show();
b.show();
Cstatic.show();
}
}
この例では、クラスCstaticのインスタンスa、bをつくり、
それぞれ、静的メンバ変数へ代入を行い、
静的メンバ関数showを呼び出す例です。
アクセス方法は、次の2つです。
1.インスタンス名.静的メンバ関数名 (例 a.show)
2.クラス名.静的メンバ関数名 (例 Cstatic.show)
2のアクセス方法を使えば、
クラスのインスタンスを作成しなくても
いきなりアクセスできるのが特徴です。