static(スタティック) |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
static(スタティック)
クラスのフィールドやメソッドを
「クラスが持つもの」に変更する命令。
staticにしたメソッドは
インスタンス化しないでも使える。
フィールドの場合も同じ。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
メソッドをstatic化した例
自動車クラスのアクセルメソッドをstaticにして、
それを外部から使ったイメージ。
紙の設計図がメソッドを持った感じになる。
使い方はstatic化したいフィールドや
メソッドにstatic命令を付けるだけ。
それで、設計図が持つフィールドやメソッドになる。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
static(スタティック)とインスタンス化の違い |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
インスタンス化しないでフィールドやメソッドが使えるなら、
インスタンス化する必要なんてない?
自動車の車体色の例:通常のインスタンスの場合
生成したインスタンスは、各自が車体色フィールドを持つ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
自動車の車体色の例:
車体色フィールドをstaticにした場合
車体色フィールドは自動車クラスが持つ
クラスフィールド1つだけになる。
だから、インスタンスをいくつ作っても
車体色フィールドは全部のインスタンスで1つ。
クラス全ての共有のフィールドになる。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
例えば、みんなで1つを共用する物に使える。
例:道具箱クラス
道具箱クラスを作って一時的に使う道具メソッドを
ここに集める。
しかし、一時的にしか使わない
道具箱インスタンスを何個も作る必要ある? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そこで、
この道具箱クラスのメソッドを全部staticにする。
こうすることでインスタンス化しないで
メソッドを使えるようにして1つにまとめられる。
これをみんなで使えばいくつも道具箱を作らないで
すむから無駄がない。
staticは無駄を無くしたり整理するのに使える。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
ちなみに、staticは「静的」と言う意味。
「静的」の反対は「動的」。
英語だとダイナミック(dynamic)。
これらの言葉はプログラミングでは
いろいろな所で使われるので
意味を覚えておくこと。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|