7、分类
来源:互联网 发布:linux连接工具 ssh 编辑:程序博客网 时间:2024/06/01 17:53
分类概念
分类(Category)允许向一个类文件中添加新的方法声明,它 不需要使用子类机制,并且在类实现的文件中的同一个名字下定义这些方法。其语法举例如下:
#import "ClassName.h"@interface ClassName ( CategoryName ) // 方法声明@end
分类实例
前面多态性中曾经使用过Vector和Scalar的例子,下面我们为 Vector增加“减”sub的方法。
Vector+sub.h文件
#import <Foundation/Foundation.h>#import "Vector.h"@interface Vector (sub) -(Vector *) sub: (Vector *) v; @end
Vector+sub.m文件
#import "Vector+sub.h"@implementation Vector (sub) -(Vector *) sub: (Vector *) v { Vector *result = [[Vector alloc] init]; [result setVec1: vec1 - [v vec1] andVec2: vec2 - [v vec2]]; return result;}@end
调用的main函数
#import <Foundation/Foundation.h>#import "Vector+sub.h"int main (int argc, const char * argv[]) { Vector *vecA =[[Vector alloc] init]; Vector *vecB =[[Vector alloc] init]; id result; //set the values [vecA setVec1: 3.2 andVec2: 4.7]; [vecB setVec1: 32.2 andVec2: 47.7]; // print it [vecA print]; NSLog(@" + "); [vecB print]; NSLog(@" = "); result = [vecA add: vecB]; [result print]; [vecA print]; NSLog(@" - "); [vecB print]; NSLog(@" = "); result = [vecA sub: vecB]; [result print]; // free memory [vecA release]; [vecB release]; [result release]; return 0;}
小结
其中result = [vecA add: vecB]中的add:是Vector类原有 的方法,result = [vecA sub:vecB]中都sub:是Vector分 类添加的方法。 分类是在Java和C++等面向对象的语言中没有的概念,分类本质上是通过Objective-C的动态绑定而实现的。通过分类 使用能够达到比继承更好的效果。
0 0
- 7、分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- 分类
- activiti工作流06-任务分支
- xcode git设置用户命令
- Linux C代码实现读取配置文件示例
- python中文注释
- 关于Java中反射和注解的使用
- 7、分类
- windows平台下的eclipse远程连接cdh5
- .a文件如何打包到Android项目中
- spring data jpa 懒加载 处置
- Android studio遇到 java.lang.OutOfMemoryError: GC app:transformClassesWithDexForDebug解决方法 以及gradle优化
- Qt中int转换成QString
- [编程题]洗牌
- Unity官方脚本(一)
- 文章标题 POJ 2349:Arctic Network ( 最小生成树Kruskal算法+并查集)