黑马程序员技术交流社区

标题: self = [super init]; 这里使用self,是为了让当前对象指向父类吗?不太理解 [打印本页]

作者: 菜鸟八哥    时间: 2015-1-13 22:07
标题: self = [super init]; 这里使用self,是为了让当前对象指向父类吗?不太理解
#import<Foundation/Foundation.h>

@interface Person :NSObject
@property int age;

@end

@implementation Person


//重写-init方法的作用:让成员变量一创建出来就是什么值,而不是原先父类中默认的0。
//该方法不需要再声明,应为已经在父类NSObject类的声明中声明过了,这里只需要做下重写就可以
重写构造方法的注意点
1.先调用父类的构造方法([super init])
2.再进行当前对象内部成员变量的初始化


/*

-(id)init //注意:id类型,表示任何对象都可以调用init,所以返回的类型是不确定的,所以使用id;
{
   //重写构造方法的条件:
   //1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其它属性
//[super init]有时候返回的对象不一定跟self一样,为了保证代码严谨,把返回值赋值给self  
//解释:因为父类的所有东西都被子类继承,所以要想初始化Person的成员变量,就必须把父类的成员变量初始化。
  self = [super init];
  //2如果对象初始化成功,才有必要进行当前成员变量的初始化
  if(self !=nil)
{
  //当前初始化成功;
_age = 10;
}



作者: bun    时间: 2015-1-14 08:45
同求,相同的疑惑
作者: zyp115    时间: 2015-1-14 09:04
将用父类对象方法init后得到的初始化对象赋值给当前对象,我是这么理解的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2