araharu
@araharu

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

フィールドに初期値を代入することとコンストラクタを用いることの違いについて

解決したいこと

javaのコンストラクタについての理解を深めたい。

内容

この2つのコードについて、違いやこの違いによって生じる影響がわからないので、教えていただきたいです。
具体的には、クラスを作る際にフィールドに直接 初期値を代入することと(①)、コンストラクタでフィールドに代入する(②)というこの2つの違いです。

public class Hero {
    int hp = 100;

    // コンストラクタやメソッドを省略
}

public class Hero {
    int hp;

    public Hero() {
        this.hp = 100;
    }

    // コンストラクタやメソッドを省略
}

よろしくお願いします。

0

1Answer

①と②のように、フィールドを定数で初期化する場合は実用上の違いはありません。この場合は直接初期値を代入することでシンプルに書くことができます。

他方、以下のように単純ではない初期化を行う場合は、コンストラクタを使うべきです。

  • 初期値がコンストラクタの引数に依存する
  • 複数のコンストラクタで異なる初期値をセットしたい
  • 初期化に if やエラー処理などのロジックが関わる

なお、フィールドの初期化はコンストラクタの実行より先に行われます。

参考

4Like

Your answer might help someone💌