继承和类别的区别
2016-11-10 12:56
204 查看
在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。
1.继承Inherit
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性,这个类别无法做到。
示例代码:
?
2.类别category
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
以下两种方式最后使用类别。
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。
示例代码:
?
1.继承Inherit
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性,这个类别无法做到。
示例代码:
?
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
以下两种方式最后使用类别。
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。
示例代码:
?
相关文章推荐
- iOS 类别和继承的区别之synthesize not allowed in a category\'s implementation
- iOS 类别和继承的区别之synthesize not allowed in a category's implementation
- 类别的作用?继承和类别在实现中有何区别?
- iOS 类别与继承的区别以及复用机制的理解
- 【iOS Tips】004-继承、类别、扩展含义及区别?
- 类别的作用?继承和类别在实现中有何区别?
- 类别的作用、继承/扩展与类别的区别
- ios类别和继承的区别
- 类别和继承的区别
- 类别的作用?继承和类别在实现中有何区别?
- 类别的作用?继承和类别在实现中有何区别?
- 继承类中override和new的区别
- private,public,protect这三种继承方式相互之间的区别
- C#继承类重写与隐藏基类方法的区别
- 调用CreateThread来实现多线程和继承线程类来实现多线程区别
- private,public,protect这三种继承方式相互之间的区别
- C#虚基类继承与接口的区别
- C++类继承方式的区别
- 浅谈类两种继承机制--接口(Interface)和类(Class)的区别
- 重载,继承,重写和多态的区别