javaを使っていてstaticとかどうやって使い分けるのかあいまいだったので、それを調査した。
static
メソッドやメンバ変数にstatic修飾子を付けると、staticメソッド、static変数になります。
static修飾子を付けると何が変わるかというと、newしなくてもそのメソッドやメンバ変数にアクセスできるようになります。
つまり共通のメソッドや変数をクラス間で共有したい場合に使うということ。以前Applicationクラスを通してデータをやり取りするという記事を書いたが、それと同じである。
https://qiita.com/QiitaD/items/549fb2143b2774c30d72
(それにしてもstaticおじさんはさすがに笑った…)
ほかにも「インスタンス化しなくても利用できるから」というものがある。Utilityクラスなどは、メソッド単体で処理が完結している、つまりクラスを定義した時点で用途が確定しているので、インスタンス化が必要ないということらしい。その場合はstaticもする。
https://teratail.com/questions/13203
感想
staticについてはわかったが、publicやfinal等まだわかっていない。
publicとprivateは言わずもがなオブジェクト指向設計の観点から使い分けるのだろう。
しかしprotectedやデフォルトがなぜ存在しているのかわからない(アクセスに違いがあるのはわかるが)ので、それも調べてみたい。