黑马程序员技术交流社区
标题: OC中对象创建,self,super的详解 [打印本页]
作者: 苏子瞻201068 时间: 2015-9-18 09:27
标题: OC中对象创建,self,super的详解
1:self是类的隐藏的参数,指向当前调用方法的类,另一个隐藏参数是_cmd,代表当前类方法的selector。
2:super并不是隐藏的参数,它只是一个"编译器指示符",它和self指向的是相同的消息接受者
3:当使用self调用方法时,会从当前类的方法列表中开始寻找,如果没有,就从父类中再找,而使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法
代码实现方法(详细看代码中的注释)
一:PersonSelf.h声明文件
#import <foundation foundation.h="">
@class Student; //@class一般用在头文件中
@interface PersonSelf : NSObject
{
//声明两个实例变量
int age;
NSString * name;
Student *s;
}
//定义方法
-(NSString *) getName;
-(void) setName:(NSString *)_name;
-(int) getAge;
-(void)setAge:(int)_age;
@end</foundation>
[size=1em]?
二:PersonSelf.m实现文件
#import[size=1em] "PersonSelf.h"
#import "Student.h" //#import一般使用在实现文件中
@implementation PersonSelf
-(id)init{
if(self=[super init]){ //super可以调用父类中的方法
s=[[Student alloc]init];
NSLog(@"student:%@\n",s);
}
return self;
}
-(NSString *) getName{
return name;
}
-(void) setName:(NSString *)_name{
name=_name;
[self setAge:14];//self可以去调用本类对象中的方法
NSLog(@"setAge");
NSLog(@"self class is: %@\n",[self class]);
NSLog(@"super class is: %@\n",[super superclass]);
}
-(int) getAge{
return age;
}
-(void)setAge:(int)_age{
age=_age;
}
@end
[size=1em]?
作者: 苏子瞻201068 时间: 2015-9-18 09:56
希望大家补充,谢谢
作者: 侯越强 时间: 2015-9-18 10:15
不错,加油!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |