- @implementation Person
- //当子类把父类的init覆盖了,这是默认的先执行子类的
- - (instancetype)init{
- //先让父类把父类原来做的事情做完
- self = [super init];
- //判断父类是否初始化成功
- if (self) {
- //此处写子类初始化的内容
- _age = 10; //给年龄设置为默认值 10岁
- }
- return self; //self指代的事方法的调用者
- }
- @end
复制代码
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,即子类实例。
|
|