5

これをどのように行うのですか?次のように簡単ですか:

Name myName = new Name();

私は少し混乱しています。インスタンス変数のないクラスである必要があります。「空のオブジェクトを作成する」だけです。もちろん、コンストラクターも空になります。

4

3 に答える 3

7

「空のオブジェクト」は、Java 用語ではかなりあいまいです。私はそれを次のように解釈できます:

Object empty = new Object();

これは、作成できる最も空のオブジェクトに関するものです。

ただし、あなたの例では、

Name myName = new Name();

これにより、デフォルトのコンストラクターに配置したコードに基づいてオブジェクトが作成されます。(すべてをデフォルト値に設定している場合、かなり空だと思います)

于 2013-11-12T00:06:02.640 に答える
4

パラメーターなしのコンストラクターがある場合Nameは、確かに。「空」であるかどうかは、そのコンストラクターが何をするか、またはそれが持つ可能性のあるデフォルトに依存します。

とにかく「空のオブジェクト」をどのように定義しますか?

たとえば、変数が必要だが、実際にはオブジェクトを持ちたくない場合は、初期化せずに変数を宣言するだけです。

Name myName;

この場合myNamenull(または「未割り当て」? コンテキストによって異なります) になりますが、タイプにNameなり、後で (値が割り当てられると) そのように使用できます。

変数自体が行うことは、「オブジェクト」が存在するメモリ内の場所を指すことだけです。したがってName myName、オブジェクトを「作成」するのではなく、メモリ位置へのポインターを作成するだけです。 new Name()コンストラクターを呼び出して、実際にオブジェクトを作成します。例のように一緒に使用すると、後半はオブジェクトを作成し、前半はオブジェクトが存在するメモリ内の場所を指します。

于 2013-11-12T00:01:57.950 に答える
1

空とは何を意味するかによって異なります。あなたがしたことは、オブジェクトのインスタンス化です。オブジェクト コンストラクターが Name オブジェクトのフィールドを初期化した場合、オブジェクト フィールドには値が割り当てられます。また、これらのフィールドのメモリは、new を呼び出したときに割り当てられました。したがって、それらに値を割り当てていなくても、実際にはメモリに存在しますが、単に初期化されていません。

于 2013-11-12T00:01:33.957 に答える