- 1
- 0
- 约6.37千字
- 约 4页
- 2025-09-01 发布于北京
- 举报
Objective-C中self和super
分类:iOS开发之基础篇
2011-11-1915:40140人阅读评论(0)收藏
在Objective-C中的类实现中经常看到这两个关键字”self”
和”super”,以以前oop语言的经验,拿c++为例,self相当于this,
super相当于调用父类的方法,这么看起来是很容易理解的。以下面的
代码为例:
@interface:NSObject{NSString*name;}-(void)
setName:(NSString*)yourName;@end@interface
Me:{NSUIntegerage;}-(void)setAge:(NSUInteger)
age;-(void)setName:(NSString*)yourNameandAge:(NSUInteger)
age;@end@implementationMe-(void)
setName:(NSString*)yourNameandAge:(NSUInteger)age{[self
setAge:age];[supersetName:yourName];}@endintmain(intargc,
char*argv[]){NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]
init]Me*me=[[Mealloc]init];[mesetName:@asdf
andAge:18];[merelease];[pooldrain];return0;}
上面有简单的两个类,在子类Me中调用了自己类中的setAge和
父类中的setName,这些代码看起来很好理解,没什么问题。然后我
在setName:andAge的方法中加入两行:
NSLog(@selfclassis%@,[selfclass]);NSLog(@superclass
is%@,[superclass]);
这样在调用时,会打出来这两个的class,先猜下吧,会打印出什么?按
照以前oop语言的经验,这里应该会输出:
selfsclassisMesupersclassis
但是编译运行后,可以发现结果是:
selfsclassisMesupersclassisMe
self的class和预想的一样,怎么super的class也是Me?
self是类的隐藏的参数,指向当前当
最近下载
- 1512附件:目视间隔和进近实应用规范.pdf VIP
- 江苏省南京市江宁区联合体2025-2026学年七年级上学期期中生物试题(含答案).pdf VIP
- [工学]内燃机设计课件 袁兆成.pdf
- 《营养与健康》PPT课件.ppt VIP
- 2025-2026学年高中心理健康北师大版2015高中一年级全一册-北师大版2015教学设计合集.docx
- 2025交警安全考试题库及答案.doc VIP
- Q/GDW 10248.7-2016输变电工程建设标准强制性条文实施管理规程 第7部分:输电线路工程施工.docx VIP
- 人工智能语料库建设.pptx VIP
- 冬季施工应急预案.doc VIP
- 四川省中小型水利工程施工质量检验与评定指导.pdf VIP
原创力文档

文档评论(0)