0

私のAPクラスの一部として、私はオブジェクト、インスタンス、参照などを学んでいます...したがって、私が理解していることから、参照は何かを指す変数です:値、クラスなど。. . したがって、オブジェクトがクラスへの参照であると言うのは合法ですか?

注: これが主観的なものであることは承知していますが、そのような比較は他では見られないようです。

4

7 に答える 7

3

参照の通常の定義では、そうは言えません。正しいのは「オブジェクトはクラスのインスタンスです」です。

参照の通常の定義は、通常何らかのオブジェクトが占めるメモリ位置を指す値です。ポインターと参照の違いは、前者ではポインター演算を実行できますが、後者では実行できないことです。

たとえば、次のコード スニペットでは次のようになります。

SomeClass o = new SomeClass();
SomeClass foo = o;

SomeClassはクラスであり、キーワードのこの特定の呼び出しによって返されるoのインスタンスへの参照です。の新しいインスタンスにメモリを割り当て、そのコンストラクタを呼び出して初期化します。は、 によっても参照されるのまったく同じインスタンスへの別の参照です。つまり、とは同じオブジェクトを指していますが、同じ参照ではありません。SomeClassnewnew SomeClass()SomeClassfooSomeClassoofoo

于 2013-09-29T00:33:45.550 に答える
1

いいえ、それは有効なステートメントではありません。オブジェクトは、クラスへの参照ではなく、クラスのインスタンスです。次のような場合:

MyClass var = new MyClass();

次に、それが割り当てられvarたインスタンスへの参照です( )。このインスタンスはオブジェクトです。MyClassnew MyClass()

JLS §4.3.1から:

オブジェクトは、クラス インスタンスまたは配列です。

参照値 (多くの場合、参照のみ) は、これらのオブジェクトへのポインターであり、オブジェクトを参照しない特別な null 参照です。

于 2013-09-29T00:33:59.420 に答える
0
Object foo = new Object();

fooクラスの特定の具体的なインスタンスへの参照ですがObject、クラス自体への参照ではありません。

Class bar = Object.class;

barObjectクラスへの参照です。

于 2013-09-29T00:39:02.593 に答える