super的作用
直接调用父类中的某个方法
super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
使用场合:子类重写父类的方法时想保留父类的一些行为
@public : 在任何地方都能直接访问对象的成员变量
@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)
@protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected)
@package : 只要处在同一个框架中,就能直接访问对象的成员变量
2.-init方法的重写
目的:给创建出来的对象初始化一些成员变量。
注意点:先调用父类的构造方法([super init])再进行子类内部成员变量的初始化
- (id)init
{
// 1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其他属性
self = [super init]; // 当前对象self
// 2.如果对象初始化成功,才有必要进行接下来的初始化
if (self != nil)
{ // 初始化成功
_name = @"David";
}
// 3.返回一个已经初始化完毕的对象
return self;
}
3.自定义构造方法
注意:
1.一定是对象方法,一定以 - 开头
2.返回值一般是id类型
3.方法名一般以initWith开头
4.分类
作用:在不改变原来类内容的基础上,可以为类增加一些方法
注意:
1.分类只能增加方法,不能增加成员变量
2.分类方法实现中可以访问原来类中声明的成员变量
3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类 --> 父类 |
|