我从 Java 转到 Objective C,类对象的想法让我想知道它与 Java 的相似之处。来自 Apple 文档中的 Objective C 指南:
A class definition's information is compiled and recorded in data structures made available to the runtime systems. The compiler creates just one object, a class object, to represent the class.
所以我的理解是,类对象是为程序将要使用的所有类创建的,而类对象是用来为该类创建对象的。
作为比较,JVM 是否为其加载的所有类都有类似的对象?
最佳答案
鉴于 Java 直接源自 Objective-C(不,确实如此),两者的运行时模型非常相似。
在 Java 中,“类”的概念并不像 Objective-C 中那样通用。
在 Objective-C 中,类是元类的一个实例。出于所有意图和目的,Objective-C 中的每个 Class 对象都完全按照您所说的进行操作;它描述了 Objective-C 运行时中可用的特定类。
Java 类在概念上也是如此。有一个关键的区别。在 Objective-C 中,类方法在子类之间继承,并且更重要的是子类可以覆盖父类(super class)的类方法。
例如,NSArray
类实现了+array
类方法(“+”表示“类方法”)。 NSArray
的 NSMutableArray
子类覆盖 +array
以返回可变实例。
java.lang.Class
更类似于 Objective-C 运行时 API;它是您检查运行时中可用的类的机制。由于 Java 没有函数式 API,因此该 API 被包装在一个适当命名的类中。 java.lang.Class
有点像是运行时 API 和元类合二为一。
关于java - Objective C 中的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928243/