我很难理解这个概念。我直接引用书中的一句话:
类对象还继承自层次结构中位于其上方的类。但因为它们没有实例变量(只有实例有),所以它们只继承方法。
如果我错了,请纠正我,但类对象将是这样的:
NSString *aString = [[NSString alloc]initWithString:@"abc.."];
本例中的类对象是*aString
——到目前为止我的说法正确吗?
让我困惑的是上面引用中的第二句话,“但是因为它们没有实例变量(只有实例有),所以它们只继承方法。”
我认为一个对象(在本例中*aString
)是以下实例NSString
班级。
上面的第二句话暗示实例是不同的东西。这对我来说没有任何意义。
你错了。
NSString *aString = [[NSString alloc] initWithString:@"abc..."];
在这一行中,我们从左到右有:
- A type:
NSString *
- 变量名:
aString
- 一项作业
- A
Class
: NSString
- 类方法的调用:
+alloc
- 对类方法的返回值调用实例方法:
-initWithString:
- 一个对象作为参数传递给实例方法:
@"abc..."
在 Objective-C 中,一个Class
实际上是一种对象。您可以通过许多与实例相同的方式与它们进行交互,但由于它们是“类”,因此它们不能具有实例变量(因为根据定义,实例变量仅适用于实例)。Classes
只有方法。他们继承了其他人的Classes
,这就是对象继承的实现方式。
有关这方面的更多信息,请查看 Greg Parker 撰写的这篇精彩博客文章:http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)