■ static 修飾子とは
static 修飾子とは、インスタンスを通してではなく、クラス(属するクラス、そうでないクラスともに)から直接呼び出すことができるようになる修飾子
Java のクラスが持つことができるメソッドは主に2つ、static メソッド(クラスメソッド)と非 static メソッド、(インスタンスメソッド)である
インスタンスメソッドは、その振る舞いを持っているインスタンスを生成して呼び出す、言わばインスタンスに動いてもらう、というイメージだが、クラスメソッドはその名の通りクラスに直接属している(クラスの持ち物)
クラスメソッド内ではインスタンスに属するもの(インスタンスの持ち物)は一切参照できない、つまりインスタンスのフィールド、メソッド、同一クラス内の非 static なメソッド、this、super は使用できない(自クラスのインスタンスを生成して使用することは可能) static フィールドや他の static メソッド、引数を利用する
クラスの持ち物であるため、呼び出すときは原則として クラス名. static メソッド名 と指定する(その static メソッドを宣言しているクラス内、およびサブクラス内であればクラス名は不要)
■ 注意点
・インスタンスメソッドと同じシグネチャにはできない
・アクセス修飾子はインスタンスメソッドと同じにする
・ abstract にできない
・継承されない(static メソッドはオーバーライドできない)