Являются ли объекты классов Java?

Я читал раньше, что классы Java являются экземплярами класса Class. Но теперь мой учитель информатики говорит, что классы Java не являются объектами.

Это правда?

4 ответов


класс Java не является объектом.

однако каждый класс Java имеет экземпляр Class класс, описывающий его.
Эти экземпляры являются объектами.


классы Java не являются объектами, они являются абстракцией.

однако каждый класс Java имеет соответствующий экземпляр java.lang.Class класс, который представляет ее. Это представление is объект. Но вы не должны путать представление с реальной вещью.

отношение несколько похоже на то, что между музыкой и нотами. Хотя письменная нотация представляет музыку, она сама по себе не является музыкой.

разница редко имеет значение на практике, хотя, пока вы знаете, что вы можете и не можете сделать с java.lang.Class объекты.


класс (ваш код или даже скомпилированный код в вашем .class files) не являются объектами. У вас нет объекта, пока вы не создадите экземпляр этого класса.

например, Java.lang.String - Это класс. String s = new String("Hello world"); определяет объект типа String. Возможно, именно это делает ваш профессор.


каждый класс Java, даже java.lang.Class происходит из java.lang.Object.

EDIT:

формулировка немного неоднозначна. Экземпляры классов Java определенно являются объектами. Классы сами по себе не могут считаться объектами, потому что в памяти ничего не существует, кроме класса "blueprint".