static修飾子
static修飾子とは
「インスタンス化しなくても、クラスから直接メソッドや変数にアクセスすることができるようにする修飾子」です。
用語
クラスフィールド / クラスメソッド ( staticあり )
主に、mainメソッドなどがそうですが
- staticな メソッドを「 クラスメソッド / 静的メソッド 」
- staticな 変数 を「クラスフィールド / クラス変数 / 静的変数」
とよびます。
※ クラスメソッド から 下記の**「インスタンスメソッド」や「インスタンスフィールド」にアクセスはできません。**
インスタンスフィールド / インスタンスメソッド ( staticなし )
- static をつけない メソッドを「 インスタンスメソッド / 動的メソッド 」
- static をつけない 変数 を「 インスタンスフィールド / 動的変数 」
※こちらはインスタンス化が必要ですが、「インスタンスクラスからクラスメソッド、クラスフィールドにアクセスすることは可能」です。
static変数
変数に static修飾子をつけると、その変数が含まれるクラスをインスタンス化せずに変数にアクセスできるようになる。
static変数は「そのクラス から生成されたすべての インスタンス で共有される値」なので、グローバル変数のように使うことができます。
static変数 の宣言と呼び出し方
static変数 の宣言の仕方はこちらです。
アクセス修飾子 static 型名 変数名
宣言した static変数, の呼び出し方はこちらです。
クラス名.変数名
※ ちなみに、クラスフィールド・メソッド を インスタンス生成した上で呼び出すと、「作らなくてもいいよ」的なワーニングが表示されます。
staticメソッド
staticメソッド とは
そのクラスでどんなにインスタンスの生成をしても、「唯一の メソッド」であることを指します。
staticメソッド の使い方
staticメソッドは、「**new演算子を使ってインスタンスを生成することなく呼び出すことができる」メソッド**です。
クラスフィールドと、インスタンスフィールドの違いで
ただ一つのクラスフィールドにアクセスするようになっています。
インスタンスを生成しなくてもメソッドを呼び出すことが可能なため、「 コードを短く書ける 」というメリットがあります。