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メソッド内で自クラスのインスタンスを生成する、または引数として受取るのであれば使用可能。