メソッドを作るときに「static」を使うと、オブジェクトを作成する必要はない。
けれども、わざわざオブジェクトを作成して呼び出すこともできる。
どっちでもいいのだろうか。
それとも何か違う?
では「オブジェクト」を作る場合と作らない場合では、何が違うのか。
今回は以上のことについて見ていくことにする。
staticを使うときと使わないときの違い
前回と前々回の記事では、オブジェクトを作らずにメソッドを呼び出す方法と、オブジェクトを作成してからメソッドを呼び出す方法についてまとめた。
この2つの違いは、staticを利用しているかいないか。
両方の記事で「static」を使ってはいるが、オブジェクトを作成してからメソッドを呼び出す方法をとると、エラーは出ないが警告が出る。
これは、コードが最適な形になっていないということを示している。
だから、staticを使った場合もオブジェクトは作れるが、好ましい形ではないということ。
なぜ好ましい形ではないのか
staticを使うと、オブジェクトを作成しなくていい。
ということは、staticがついたメソッドはオブジェクトではなくクラスに属することになる。
クラスに属するとはどういうことかというと、そのクラスから作られるオブジェクト全てがstaticがついたそのメソッドを共有しているということになる。
staticがあれば、オブジェクトを仮に100個作っても、その100個すべてが同じメソッドを共有していることになる。
staticがついたメソッドとついていないメソッドがどこに属しているかを簡単な図にしてみた。
(合っているかは自信ありません!)
イメージとしてはこんな感じなんかな?
だからstaticがあれば、わざわざオブジェクトを作らなくても、クラス名とメソッド名を指定するだけで、メソッドを実行できる。
わざわざ作る必要のないものはコンピュータにとって邪魔なだけということだな。
最後に
めっちゃ簡素に書いちゃったけど、staticについてまだまだ理解しないといけないことが多くあるみたい。
メソッドにstaticがつくと、そのメソッドはクラスに属することになって、そのクラスから作られるオブジェクト全部に共有される。
このポイントだけ今は抑えておこうと思う。
今回はメソッドだけに注目したけれど、staticは変数につけたりすることもできるらしい。
staticについてはまた今度、余裕ができたときにまとめることにしよう・・・。
コメント