OC语言--分类(category)
来源:互联网 发布:ntfs for mac有什么用 编辑:程序博客网 时间:2024/05/17 22:52
一、分类-category
在实际开发中,一个项目包含多种多样的功能,每一个功能可以分成一个模块,这些模块都是属于一个类,但是完成的功能不同,所以在实际开发中,我们一般将庞大的项目工程分成模块,在每一个模块中完成一个功能,这样开发人员只需要负责自己的模块就可以了,不必要去管其他的模块功能。如果要求在不改变原来类的基础上扩充一些模块功能,该怎么办?这样就应用到了分类,分类可以再不改变原来类的基础上扩充项目的一些功能。二、分类的功能:可以在不修改原来类的基础上给某一个类扩充一些方法。
三、分类的声明和实现:
//分类的声明 .h文件示例:
@interface 原来类名(分类名称)
//...方法列表
@end
//分类的是实现 .m文件
@implementation 原来类名(分类名称)
//...方法的实现
//...
@end
四、分类的使用注意://默认的文件名称:(Person+Study).h@interface Person(Study)- (void)read;@end//默认的文件名称:(Person+Study).m@implementation Person(Study)- (void)read{ NSLog(@"我正在读书");}@end
1.分类只能增加方法,不能增加成员变量;使用注意和说明示例:
2.分类方法实现中可以访问原来类的成员变量;
3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,这样导致原来类中的同名方法不能再使用;
4.方法调用优先级:分类(最后编译的分类优先)->原来类->父类
//Person.h文件@interface Person@property int age; //声明成员变量@property int weight;- (void)run; //声明run方法@end//Person.m文件@implementation Person@synthesize age = _age; @synthesize weight = _weight;- (void)run //实现run方法{ NSLog(@"我在跑步"); }@end//Person+Study.h文件@interface Person(Study) //Person的Study分类//@property int no; //分类中不能声明成员变量- (void)read; //声明read方法- (void)run; //声明跟Person类中同名的run方法- (void)jump; //声明jump方法@end//Person+Study.m文件@implementation Person(Study)- (void)read{ NSLog(@"年龄为%d的人正在读书", _age); //分类中可以访问Person类的成员变量}- (void)run{ NSLog(@"Person+Study的类在跑步");}- (void)jump{ NSLog(@"Person+Study正在跳高");}@end//Person+Sport.h文件@interface Person(Sport) //Person类的Sport分类- (void)jump; //声明与Study分类同名的jump方法@endPerson+Sport.m文件@implementation Person(Sport)- (void)jump{ NSLog(@"Person+Sport正在跳高");}@end//main.m文件int main(){ Person *p = [[Person alloc] init]; //创建Person类的对象 p.age = 15; //成员变量赋值 p.weight = 40; [p run]; //调用Person+Study分类中的run方法,结果为:Person+Study的类在跑步 [p read]; //结果:年龄为15的人正在读书 [p jump]; //如果Person+Study比Person+Sport类后编译,结果为:Person+Study正在跳高 //否则为:Person+Sport正在跳高}
0 0
- OC语言--分类(category)
- OC与Category 分类
- OC中的分类Category
- 黑马程序员 - OC语言 - 【考点】分类(Category)使用注意事项
- 黑马程序员---OC分类-category
- Object-C Category(OC分类)
- oc语法特性-分类Category
- OC--category(类目、分类、类别)
- OC语言学习 (五) Category分类 和 类的延展Extension
- OC 中的分类(Category)详解
- Objective-OC中的Category(分类)
- OC Category 分类 Extension 延展.md
- OC语法<3.1> OC中特有的语法:Category分类
- OC学习7——@class、Category分类、protocol协议
- OC新语法-Category分类定义及用途
- [黑马程序员][OC]分类(Category)的使用
- 03-OC中的分类(Category),代码块(Block),协议(property)
- 黑马程序员-IOS基础之OC分类(Category)
- VBA获取某文件夹下所有文件和子文件目录的文件
- oracle 系统表
- 大话设计模式C++实现-第22章-桥接模式
- C#编程如何编写的自动读写配置文件.ini格式
- C#调用C++写的DLL
- OC语言--分类(category)
- java23种常用设计模式之工厂方法模式(Factory Method)
- Highcharts学习一:Highcharts的几个函数
- Android FrameWork音频管理AudioManager的一点解析(续一)
- vs2003 wpf svn版本控制器类库添加不到解决方案
- SVN各种异常解决整理
- BZOJ 3170 Tjoi 2013 松鼠聚会 计算几何
- eclipse Ctrl +左键查看源代码提示找不到源码
- hibernate 只查询某个字段