Objective-C,如何在不使用类继承的情况下,扩展已有类的实现
2014-08-13 16:58
357 查看
在Objective-C 2.0中,有2种办法可以在不使用类继承的情况下,扩展已有类的实现。一种是分类(Category),另一种是类扩展(Class Extensions)。
前者可以在没有已有类的源代码的情况下扩展类的实现。可以定义新的方法,但不能定义实例变量。
后者必须有已有类的源代码才能实现扩展。但是相比分类,类扩展还可以定义实例变量,并且隐藏这些信息。也就是说,类扩展是一种定义私有变量和私有方法的手段。
前者可以在没有已有类的源代码的情况下扩展类的实现。可以定义新的方法,但不能定义实例变量。
后者必须有已有类的源代码才能实现扩展。但是相比分类,类扩展还可以定义实例变量,并且隐藏这些信息。也就是说,类扩展是一种定义私有变量和私有方法的手段。
相关文章推荐
- 查看临时表空间使用情况,如何扩展表空间
- 如何实现不能被继承的C++的类,且能正常使用
- 如何实现MySQL数据库使用情况的审计
- 如何在不用JavaScript的情况下使用CSS来实现图表功能
- 浅谈javascript对象、如何实现继承、jQuery方法的扩展(jquery插件)
- 如何在 Objective-C 中实现协议扩展
- 如何使用ArrayList类实现n位数的任意组合?也考虑0在首位的情况
- 如何使用Createjs来编写HTML5游戏(八) 通过继承扩展EaselJS中的基础元素
- Objective-C 中如何变相实现多继承
- 如何在不使用系统函数的情况下实现PHP中数组系统函数的功能
- 使用Ext实现js的继承,以及扩展Ext组件的思路
- 如何实现在已有代码之后添加逻辑之继承,组合(静态代理)实现方法
- objective-c中为什么不能实现多重继承及如何变通实现
- Go如何使用实现继承的组合
- 用C++实现单例模式3——如何在不使用锁和C++11的情况下,用C++实现线程安全的Singleton
- 使用masterpage的情况下如何使用js实现repeater控件里的checkbox全选
- 什么是对象序列化?如何实现?什么情况下使用?
- 如何使用SQL Server实现SignalR的横向扩展
- scala使用implicit实现扩展已有功能
- 如何编程实现扩展右键菜单之二:使用子菜单