LoginSignup
2
3

More than 3 years have passed since last update.

【Java】static修飾子 ( 静的メソッド / 静的変数 )

Last updated at Posted at 2020-11-26

static修飾子

static修飾子とは

インスタンス化しなくても、クラスから直接メソッドや変数にアクセスすることができるようにする修飾子」です。

用語

クラスフィールド / クラスメソッド ( staticあり )

主に、mainメソッドなどがそうですが

  • staticな メソッドを「 クラスメソッド / 静的メソッド
  • staticな 変数 を「クラスフィールド / クラス変数 / 静的変数

とよびます。

※ クラスメソッド から 下記の「インスタンスメソッド」や「インスタンスフィールド」にアクセスはできません。

インスタンスフィールド / インスタンスメソッド ( staticなし )

  • static をつけない メソッドを「 インスタンスメソッド / 動的メソッド
  • static をつけない 変数 を「 インスタンスフィールド / 動的変数

※こちらはインスタンス化が必要ですが、「インスタンスクラスからクラスメソッド、クラスフィールドにアクセスすることは可能」です。

static変数

変数に static修飾子をつけると、その変数が含まれるクラスインスタンス化せずに変数にアクセスできるようになる。
static変数は「そのクラス から生成されたすべての インスタンス で共有される値」なので、グローバル変数のように使うことができます。

static変数 の宣言と呼び出し方

static変数 の宣言の仕方はこちらです。

アクセス修飾子 static 型名 変数名

宣言した static変数, の呼び出し方はこちらです。

クラス名.変数名

※ ちなみに、クラスフィールド・メソッド を インスタンス生成した上で呼び出すと、「作らなくてもいいよ」的なワーニングが表示されます。

staticメソッド

staticメソッド とは

そのクラスでどんなにインスタンスの生成をしても、「唯一の メソッド」であることを指します。

staticメソッド の使い方

staticメソッドは、「new演算子を使ってインスタンスを生成することなく呼び出すことができる」メソッドです。

クラスフィールドと、インスタンスフィールドの違いで

  • インスタンスフィールド : インスタンスごとに値を保存できる。
  • クラスフィールド : インスタンスを複数生成しても値が共有される

ただ一つのクラスフィールドにアクセスするようになっています。

インスタンスを生成しなくてもメソッドを呼び出すことが可能なため、「 コードを短く書ける 」というメリットがあります。

staticメソッドの注意点

  • staticメソッド内で扱う変数は、全てクラス変数かローカル変数でなければならない
  • staticメソッドは、サブクラスに継承されない
  • staticメソッドは オーバーライドすることができない

参考文献・記事

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3