0

このコードを考えると:

public class Example
{

public Example(String name)
  {
    input = name;
  }

public someMethod()
  {
    //some code
  }
}

Java で新しい (オブジェクトまたはインスタンス) を次のように宣言する場合:

Example foo = new Example("jo");

ここで実際に何が起こっているのですか?私の質問は:

  1. クラス コンストラクターのパラメーターを使用して新しいオブジェクトが作成されていますか?

  2. 新しいオブジェクトは、中括弧内にコンストラクターとデータ メンバーのすべての引数を持ちますか?

4

3 に答える 3

1

を持たないコードを考えるとdefault constructor

Example foo = new Example();はコンパイルエラーになります

引数を持つ別のコンストラクターを追加しない限り、既定のコンストラクターが既定で定義されます。この場合、明示的に定義する必要があります。default constructorそれ以外の場合は、引数を取るコンストラクターでのみインスタンスを作成できます

于 2013-02-17T18:17:30.673 に答える
1

Rohitが言ったように、デフォルトのctorが指定されていないため、コンパイラエラーが発生します。

ただし、デフォルトの ctor があると仮定すると、データ メンバーが作成されます。つまり、非静的インスタンス メンバーごとにメモリが割り当てられ ます。

クラスが任意のクラスを拡張する場合、サブクラスのコンストラクター本体が実行される前にコンストラクター (親の ctor) を呼び出す必要があります。その後、コンストラクター本体はローカル変数または ctor 引数として渡されるローカル変数を使用してデータ メンバーを初期化します。

コンストラクタ本体が完了まで実行された場合 (例外ではありません)、新しく作成されたオブジェクトへの参照が返されます。

そう:

  1. newオブジェクトを作成し、すべてがうまくいった場合はそのオブジェクトの参照を返します。

  2. コンストラクターはデータの初期化のみを行います。コンストラクター本体で定義されたデータ、またはコンストラクターの呼び出し元によって提供された引数からのデータを使用します。これらの引数はオブジェクトを作成しません。オブジェクトに役立つデータを提供します。

于 2013-02-17T18:17:59.100 に答える