11

以前、Javaクラスはクラスのインスタンスであることを読みましたClass。しかし今、私のコンピュータサイエンスの先生は、Javaクラスはオブジェクトではないと言っています。

どちらが正しいですか?

4

5 に答える 5

20

Javaクラスはオブジェクトではありません。

ただし、すべてのJavaクラスには、Classそれを記述するクラスのインスタンスがあります。
それらのインスタンスはオブジェクトです。

于 2012-08-16T15:11:49.243 に答える
6

Javaクラスはオブジェクトではなく、抽象化されたものです。

ただし、各Javaクラスには、それjava.lang.Classを表すクラスの対応するインスタンスがあります。その表現オブジェクトです。しかし、表現を実際のものと間違えないでください。

関係は音楽と楽譜の関係にいくぶん似ています。書かれた表記は音楽を表していますが、それ自体が音楽ではありません。

java.lang.Classただし、オブジェクトで何ができるか、何ができないかを知っている限り、実際には違いが問題になることはめったにありません。

于 2012-08-16T15:15:39.583 に答える
1

クラス(コード、または.classファイル内のコンパイル済みコード)はオブジェクトではありません。そのクラスをインスタンス化するまで、オブジェクトはありません。

たとえば、Java.lang.Stringはクラスです。String s = new String("Hello world");String型のオブジェクトを定義します。それはあなたの教授が作っている区別かもしれません。

于 2012-08-16T15:14:09.753 に答える
1

クラスがメソッドを理解でき、(「静的」を使用して)独自の属性を持つことができる場合は、それらをオブジェクトと考えてみませんか?オブジェクトはそれを行います。

しかし、それは彼らを混乱させるだけなので、学生に持ち込むものではありません。クラスとオブジェクトの概念をすでに習得している場合は、クラスを一種のオブジェクトと考えることができると思います。

于 2020-08-04T18:08:21.830 に答える
0

すべてのJavaクラスは、java.lang.Classから派生しjava.lang.Objectます。

編集:

言い回しは少しあいまいです。Javaクラスのインスタンスは間違いなくオブジェクトです。クラス「ブループリント」以外はメモリに存在しないため、クラス自体をオブジェクトと見なすことはできません。

于 2012-08-16T15:10:39.567 に答える