public static void main(String[] args)
この「static」とはなんだろう。
staticとは静的メンバである。
ざっくり簡単に言えば
「インスタンスを生成しなくてもフィールドやメソッドを利用できる」
オブジェクト指向の基本原則として「インスタンスの独立性」というものがありインスタンスを生成することにより"独立性を担保"できるので
今まではインスタンスを生成するごとに違う値を入れられていたと思う。
Man m1 = new Man();
Man m2 = new Man();
Man m3 = new Man();
//それぞれnameフィールドが用意されていた場合
m1.name = "m1";
m2.name = "m2";
m3.name = "m3";
staticを使った利用
大きく分けて 「staticメソッド」「staticフィールド」 の2つ。
public class Calc {
int sum = 0;
int a = 2;
int b = 3;
public static void calculate() {
sum = a * b;
}
}
pubic class Bank {
static int money = 100;
}
staticを使うと何がメリットか
staticメソッド
インスタンスを生成しなくてもクラス名.メソッド名();などで呼び出せる。
staticフィールド
あるクラスにおいて唯一無二のフィールドになる。同クラスの複数のメソッドで同じフィールドを使いたい場合などに役立つ。
共通して言えることは
「メソッドやフィールドがクラスに属するようになる」
ということである。
呼び出し方
//【クラス名】.【メソッド名】;
Calc.calculate();
Bank.money;
//【クラス名】.フィールド名;
System.out.println(Bank.money);
以上のようなところから、一番最初に書いたmainメソッドの呼び出しは'static'がついているのでインスタンスを生成しなくても呼び出せる仕組みになっています。
【注意】
・使い過ぎは可読性やオブジェクト指向原則である「インスタンスの独立性」が失われてしまうところがあるので使用の際は現場やチームの意向に遵守して使うようにしてください。
【追記】
javaを学習し始めて10ヶ月ほど経つが正確に理解したことはなかったので今回良い機会だと思いまとめてみました。まだまだ勉強し始めなので粗い理解の点もありますので指摘ありましたらコメントで宜しく御願いします!!