Objective-C中分类 (category)和扩展(Extension)以及继承(inherit)
来源:互联网 发布:到印度做软件 编辑:程序博客网 时间:2024/05/20 10:14
1、分类(category)
我们可以为一个类创建一个新的方法,而不需要在代码中编辑类定义。
下面定义并使用分类的例子程序,通过举例来很好的理解。
我们可以给Object-C中的NSString 添加camelCaseString分类,使用addMoenyUnitString方法,为所有的数字增加一个单位符号¥。
#import <Foundation/Foundation.h>/*<strong>定义分类</strong>的过程大致可分为以下几个步骤:第一步、创建一个带有接口的新文件,即创建已有类 第二步、在新文件中添加需要扩展的方法及方法的实现,即需要添加的分类 *///NSString 表示将要添加分类的类名称,该类必须是已存在的。//UnitEnded 是为类添加的方法名称。//<strong>注意:只能添加方法,不能添加变量。</strong>//头文件命名惯例:ClassName+CategoryName.h@interface NSString (UnitEnded)-(NSString*) unitEndedString;@end@implementation NSString (UnitEnded)-(NSString*) unitEndedString{ //把数组的字符输出 NSString *output = @""; output = [<span style="font-family:Arial;">self </span>stringByAppendingString:@"¥"]; return output;}@end
2、扩展(Extension)
扩展是一种匿名分类;但是和匿名分类还是有区别的,扩展可以添加新的实例变量。从Xcode 4 之后就推荐在自定义类的.m文件中使用扩展,这样就能保证良好的代码封装性,避免把私有接口暴露给外面。举个例子:
@interface MyClass : NSObject- (float)value;@end @interface MyClass () { //注意此处:扩展,扩展是没有名字的 float value;}- (void)setValue:(float)newValue;//扩展的方法@end @implementation MyClass - (float)value { return value;} - (void)setValue:(float)newValue { value = newValue;} @end
3、继承(inherit)
继承要远远高级于分类和扩展。
@interface Ball{@public NSString* color; }
@interface FootBall : Ball{}总结
:
1、分类不能在类中增加变量,只能增加方法
2、扩展可以增加变量和方法
3、分类和扩展可以有和原有类相同的方法,但是会发出警告,被分类的类的此方法就不能再用了
4、继承的话可以重写方法,也可以增加变量属性
0 0
- Objective-C中分类 (category)和扩展(Extension)以及继承(inherit)
- Objective-C分类 (category)和扩展(Extension)
- Objective-C分类 (category)和扩展(Extension)
- 【Objective-C】分类 (category)和扩展(Extension)
- Objective-C分类 (category)和扩展(Extension)
- Objective-C分类 (category)和扩展(Extension)
- Objective-C分类 (category)和扩展(Extension)
- Objective-C分类 (category),扩展(Extension)和协议(protocol)
- 【IOS开发技术】 Objective-C分类 (category)和扩展(Extension)
- Objective-C 类别(category)和扩展(Extension)
- Object-C 分类(Category) 和 扩展(Extension)
- 分类(category)和类扩展(extension)
- objective-C中category与extension的探究——关于extension(类扩展)的实验和总结
- Objective-c的category(分类)和Extension(扩张)
- Objective-C Category和Extension
- IOS 分类(category)、扩展(Extension)和继承(inheritance)的区别?
- 黑马程序员——Objective-C分类 (category)和扩展(Extension)——黑马 ios 技术博客
- Objective-C类别(category)和扩展(Extension)的基本概念
- 日记本
- 【杭电】[1285]确定比赛名次
- coreData -- 拖入其他程序的dataModel文件 导致崩溃
- border:1px引起的盒模型塌陷问题解决方法
- Python编码问题的解决方案总结
- Objective-C中分类 (category)和扩展(Extension)以及继承(inherit)
- js创建对象(无参的构造函数)
- hdfs命令
- 数据结构——实现最大堆
- 基础数据类型
- HDU1712 ACboy needs your help
- Binary Search Tree (BST)
- 企业邮箱爆破小脚本(Python版)
- BitmapFactory.decodeStream方法返回null的错误分析