我之前读过 Java 类是类的实例Class
。但是现在,我的计算机科学老师说 Java 类不是对象。
哪个是真的?
Java 类不是对象。
Class
但是,每个 Java 类都有一个描述它的类的实例。
这些实例是对象。
Java 类不是对象,它们是一种抽象。
但是,每个 Java 类都有java.lang.Class
代表它的类的对应实例。那个表示是一个对象。但是你不应该把表示误认为是实际的东西。
这种关系有点类似于乐谱和乐谱之间的关系。虽然书面乐谱代表音乐,但它本身并不是音乐。
不过,这种差异在实践中并不重要,只要您知道您可以对java.lang.Class
对象做什么和不能做什么。
类(您的代码,甚至 .class 文件中的已编译代码)不是对象。在实例化该类之前,您没有对象。
例如,Java.lang.String
是一个类。String s = new String("Hello world");
定义一个 String 类型的对象。这可能是你的教授正在做出的区别。
好吧,如果一个类可以理解方法,并且有自己的属性(使用“静态”),那么为什么不将它们视为对象呢?对象就是这样做的。
但这不是要教给学生的东西,因为它只会使他们感到困惑。我想如果你已经掌握了类和对象的概念,那么你可以把类看作是一种对象。
每个 Java 类,甚至都java.lang.Class
源自java.lang.Object
.
编辑:
措辞有点模棱两可。Java 类的实例绝对是对象。类本身不能真正被视为对象,因为除了类“蓝图”之外,内存中不存在任何东西。