- (id) init
{
if(self = [super init])
{ //为子类增加属性进行初始化
}
return self;
}
这里涉及了几个问题,
1. [super init]的作用: 面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化。
2. self 为什么要赋值为[super init]: 简单来说是为了防止父类的初始化方法release掉了self指向的空间 并重新alloc了一块空 间(可能性很小)。这时的话,[super init]可能alloc失败,这时就不再执行if中的语 句。
3. super作为消息接受者的实质:
super并不是真正的指针,[super message]的实质是由self来接受父类的message。需要注 意的是,[super message]中,message方法出现的self为[super message]语境中的self, 即子类实例。
使用注意
(1)子类拥有的成员变量包括自己的成员变量以及从父类继承而来的成员变量,在重写构造方法的时候 应该首先对从父类继承而来的成员变量先进行初始化。
(2)原则:先初始化父类的,再初始化子类的。
(3)重写构造方法的目的:为了让对象方法一创建出来,成员变量就会有一些固定的值。
(4)注意点:
(1)先调用父类的构造方法[super init];
(2)再进行子类内部成员变量的初始化。
|