HelloWorldのサンプルコードをよく見ると、メソッドにstaticという単語が確認できます。
このstaticとは何者なのでしょうか。
public class Main{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
このようなメソッドは、静的メソッドといいます。
また、静的フィールドと合わせて、静的メンバといいます。
リンク
静的メンバとは
フィールドやメソッドにstaticが付いているメンバを静的メンバといいます。
private int number01; //フィールド
public void method01(){ //メソッド
.....
}
private static int number01; //静的フィールド
public static void method01(){ //静的メソッド
.....
}
他のクラスのメンバを呼ぶ際、インスタンスを生成して実行します。
public class Greet{
public String lang; //フィールド
public void Hello(){}; //メソッド
}
public class Main{
public static void main(String [] args){
Greet g = new Greet(); //インスタンスを生成
g.lang = "ja"; //フィールド呼び出し
g.Hello(); //メソッド呼び出し
}
}
しかし、静的メンバは、インスタンスを生成しなくても呼び出すことができます。
public class Greet{
public static String lang; //静的フィールド
public static void Hello(){}; //静的メソッド
}
public class Main{
public static void main(String [] args){
Greet.lang = "ja"; //静的フィールド呼び出し
Greet.Hello(); //静的メソッド呼び出し
}
}
使いどころ
staticは、インスタンスを生成せずに呼び出すことができますが、Javaのオブジェクト指向を瓦解する機能だけにあまり使うことは、ないように思います。
しかし、Java APIでは、よく用いられており静的メソッドとして準備されているため、インスタンスを生成することなく、すぐに呼び出すことができます。
静的フィールドは、クラス間でも影響する変数となり得る変数(グローバル変数)になるため、定数として読み取り専用の用途として用いられることが多いです。