Java static 静的メンバ関数 クラスメソッド

クラス内の変数や関数に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のアクセス方法を使えば、
クラスのインスタンスを作成しなくても
いきなりアクセスできる
のが特徴です。