Javaのstaticメソッドを学ぶ


Java初心者の忘備録。

練習問題でmainとは別にメソッドを作った時。

main.java
class Main {
  public static void main(String[] args) {
    Person person = new Person;
    中略
    printData(person);
  }
  public static void printData(Person person) {
    System.out.println(person.firstName + person.lastName);
  }
}

あれ、このprintDataメソッドに付くstatic修飾子はどんな意味を持つんだったろうか?と思い調べた。

staticメソッドはクラスメソッド

Javaのメソッドは必ずクラスかインスタンスに属する。
staticメソッド(クラスメソッドとも呼ぶ)はクラスが持ち、クラスが実行するメソッドのこと。
インスタンスメソッドは、インスタンスが持ち、インスタンスが実行するメソッドのこと。

練習問題のprintDataメソッドの場合、Mainクラスに属するstaticメソッドとなる。

staticメソッドのアクセス範囲

staticメソッドを実行するクラス自体はインスタンスではないため、staticメソッドからインスタンスに属するフィールドやメソッド、staticではない内部クラスを使うことはできない。
staticメソッドで扱えるのはstaticフィールドや他のstaticメソッド、引数を使ったプログラムとなる。

※インスタンスが持つフィールド・メソッドにアクセスしたい場合
インスタンスに属するものは直接参照できないが、staticメソッド内で自クラスのインスタンスを生成する、または引数として受取るのであれば使用可能。