私のAPクラスの一部として、私はオブジェクト、インスタンス、参照などを学んでいます...したがって、私が理解していることから、参照は何かを指す変数です:値、クラスなど。. . したがって、オブジェクトがクラスへの参照であると言うのは合法ですか?
注: これが主観的なものであることは承知していますが、そのような比較は他では見られないようです。
参照の通常の定義では、そうは言えません。正しいのは「オブジェクトはクラスのインスタンスです」です。
参照の通常の定義は、通常何らかのオブジェクトが占めるメモリ位置を指す値です。ポインターと参照の違いは、前者ではポインター演算を実行できますが、後者では実行できないことです。
たとえば、次のコード スニペットでは次のようになります。
SomeClass o = new SomeClass();
SomeClass foo = o;
SomeClass
はクラスであり、キーワードのこの特定の呼び出しによって返されるo
のインスタンスへの参照です。の新しいインスタンスにメモリを割り当て、そのコンストラクタを呼び出して初期化します。は、 によっても参照されるのまったく同じインスタンスへの別の参照です。つまり、とは同じオブジェクトを指していますが、同じ参照ではありません。SomeClass
new
new SomeClass()
SomeClass
foo
SomeClass
o
o
foo
いいえ、それは有効なステートメントではありません。オブジェクトは、クラスへの参照ではなく、クラスのインスタンスです。次のような場合:
MyClass var = new MyClass();
次に、それが割り当てられvar
たインスタンスへの参照です( )。このインスタンスはオブジェクトです。MyClass
new MyClass()
JLS §4.3.1から:
オブジェクトは、クラス インスタンスまたは配列です。
参照値 (多くの場合、参照のみ) は、これらのオブジェクトへのポインターであり、オブジェクトを参照しない特別な null 参照です。
Object foo = new Object();
foo
クラスの特定の具体的なインスタンスへの参照ですがObject
、クラス自体への参照ではありません。
Class bar = Object.class;
bar
Object
クラスへの参照です。