-1

クラスタイプのメンバーをフィールドとしてB持つクラスがあるとします。C

ここBで、デフォルトのコンストラクターが合成されないように、のコンストラクターを作成しました。

ただし、コンストラクターはその型フィールドを明示的にB's初期化しません。C

Class B
{
  C obj_c;

  B()
  { }
}

C ++では、のデフォルトコンストラクタはobj_ccozと呼ばれます。初期化されていないメンバーのデフォルトコンストラクタは、オブジェクトタイプのメンバーに対して暗黙的に呼び出されます。Javaはどうですか?

コンストラクターがJavaのフィールドを初期化しない場合はどうなりますか?

4

2 に答える 2

7

初期化されていないメンバー変数はfalse、ブール値、0数値、およびnullオブジェクト参照用に自動的に初期化されます。これはここにobj_c当てはまります。に初期化されnullます。

編集

に初期化しているのはコンストラクターではありませんnullJava 言語仕様によると、Java はクラス変数とインスタンス変数を初期化しなければ初期化します。

于 2013-03-11T20:49:04.707 に答える
1

C のコンストラクターは暗黙的に呼び出されません。フィールドの初期化またはコンストラクターからの設定によって、明示的に呼び出す必要があります。

于 2013-03-11T20:49:06.710 に答える