0

2 つの宣言に違いはありますか。長所と短所はありますか?どちらが好ましいです。

class Car
{
   CarLoan loan= new CarLoan();
}

VS

class Car
{
   CarLoan loan;

   Car()
   {
       loan = new CarLoan();
   }
}

コンストラクター呼び出しの前にメンバーの初期化が呼び出されると思います。他に違いはありますか?

4

3 に答える 3

1

2 つ以上のコンストラクターがあり、それぞれで初期化値が異なる場合は、メンバーの初期化で同じことを行う方法がないため、コンストラクターの初期化を使用する必要があります...

ただし、コンストラクターが 1 つしかない場合は、メンバーの初期化を使用してコードをわかりやすくすることができます...

于 2013-02-16T18:04:41.327 に答える
0

事前初期化(メンバーの初期化)を使用すると、JVM はfinalキーワードのように速度が向上します。クラス メンバはデフォルト値で初期化されます。それは利点です。あなたはあなたのコードの所有者です。場合によっては、デフォルト値を変更してから変更してコンストラクターを使用することに同意します。お役に立てば幸いです。

于 2013-02-16T19:04:33.330 に答える
0

最後に、両方の例に違いはありません。

ただし、複数のメンバーがある場合は、呼び出されたコンストラクターのコードが呼び出される前に、直接初期化されたメンバーが構築されます。

すべてのコンストラクターで直接初期化されたすべてのメンバーをインライン化するように考える必要があります。

オブジェクトの作成中に、Eclipse デバッガーで非常によく確認できます。

于 2013-02-16T18:22:49.807 に答える