------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
分类 (catgory)的概念及作用
1)在不修改源代码的基础上增加新的方法
2)一个庞大的类可以分模块开发
3)一个庞大的类可以由多人编写,更有利于团队的合作
分类的目的:
1)对现有的类进行扩展
比如,你可以扩展cocoa touch 框架中的类,你在类别中增加的方法会被子类所继承,而且在运行时跟其他的方法没有区别。
2)作为字累的代替手段
不需要定义和使用一个字累,你可以通过类别直接向已有的类里增加方法。
3)堆类中的方法归类
利用catgory把一个庞大的类或氛围靠块进行开发,从而更好的对类中的方法进行更新和维护。
分类的命名规则:类名+扩展方法
分类的接口声明与类的定义是十分相似,但分类不继承父类,只需要带一个括号,表明该分类的主要用途。
使用步骤:
1)先声明一个类
格式:
@interface 待扩展类名(分类的名称)
@end
person+base---->分类文件的命名规则
如:
分类(catgory)使用注意事项
1)分类只能增加方法,不能增加成员变量 @property (可能编译不报错,但运行有问题)
2)分类可以访问原来类的成员变量
例如:
person.h
person.m
分类(catgory)延展
1.类延展的概念
延展又称为扩展(Extendsion)
Extendsion是catgory的一个特例
其名字为匿名(为空 )并添加的方法一定要予以实现(catgory 没有这个限制)
@interface Myclass( ){
float value;
}
-(void)setValue:(float)NewValue;
@end
这种写法的类别叫,匿名类别,又叫类扩展,其实就是为一个添加额外的原来没有的变量,方法或者属性。
2)延展的实现特点:
可以在延展中定义实例变量和方法。
延展不能使用@implementation 类名(),实现类别的方法。
延展增加的方法直接在原类里实现方法。