继承与category的区别
来源:互联网 发布:电脑上淘宝直播 编辑:程序博客网 时间:2024/05/29 08:29
在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。
1.继承Inherit
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性,这个类别无法做到。
示例代码:
2.类别category
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
以下两种方式最后使用类别。
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。
示例代码:
1.继承Inherit
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性,这个类别无法做到。
示例代码:
?
1
2
3
4
5
6
7
8
// ViewControllerEx.h
@interface
ViewControllerEx : UIViewController
//自己需要添加的方法
@end
// ViewControllerEx.m
@implementation
ViewControllerEx
// 方法的实现
@end
2.类别category
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
以下两种方式最后使用类别。
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。
示例代码:
?
1
2
3
4
5
6
7
8
9
// 这里有一个约定俗成的规定,类别文件命名时,是原类名+扩展标识名
// NSString+ex.h
@interface
NSString
(ex)
// 扩展的类回别方法
@end
// NSString+ex.m
@implementation
NSString
(ex)
// 方法的实现
@end
0 0
- 继承与category的区别
- protocol、category和继承的区别
- "catalog" 与 "category" 的区别
- log4j 的Logger与Category的区别
- oc中protocol、category和继承的区别
- OC基础---protocol、category和继承的区别
- oc中protocol、category和继承的区别
- iOS之类别(Category)、类扩展、继承的区别
- IOS--category与extension区别
- IOS Category 与 Extension区别
- android.intent.action.MAIN与android.intent.category 的区别
- 关于分类category与类扩展extension的区别
- 继承成员与继承方法的区别
- c++虚继承与继承的区别
- c++继承与java继承的区别
- iOS 类别和继承的区别之synthesize not allowed in a category\'s implementation
- iOS 类别和继承的区别之synthesize not allowed in a category's implementation
- IOS 分类(category)、扩展(Extension)和继承(inheritance)的区别?
- NSSet与NSArray的不同点
- iOS上线流程
- java.io.Console的使用
- HTTP五类协议状态码的意思
- 只需要发送请求就可以获取你所在地…
- 继承与category的区别
- 《将博客搬至CSDN》
- XMPP图片及语音发送解决方案
- appStore上传苹果应用程序软…
- iOS关于聊天消息提醒铃声
- scp使用加密算法报错unknown cipher type
- Java NIO使用及原理分析 (一)
- 栈的链式存储实现
- java对redis的基本操作