エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Java】フィールド値、コンストラクタで値を入れるべき?【956日目】

コンストラクタで値を入れる?

class Apple {
  private string color = "red";
}
class Apple {
  private string color;

  Apple() {
    this.color = "red";
  }
}

どちらがいいだろう。

この例はどちらでもいい

上の例はどちらでもいいです。

強いて言うなら、上のほうが短いので楽ですね。

ではどういう時に変えると良いか

引数が必要

class Apple {
  private string color;

  Apple(string color) {
    this.color = color;
  }
}

このように、生成するときに値を入れる。
あるいは、引数を使用して関数を動かすときには必要。

静的呼び出し

class Apple {
  static private string color = "red";
}

この場合は、引数を取らないほうが良い。
なぜか。

静的呼び出しのときにはインスタンス化されていない。
コンストラクタを必ずしも通るわけではないので、どのタイミングで値が入れられているかわからない。

どちらも必要。

ということで、場合によってはどちらが良いかが変わる。

ちゃんと用途を考えて書きましょうφ(・