类别和延展
OC中有多继承么,如果没有,用什么代替?
- OC不支持多继承,如果想要实现多继承的话,可以通过类别和协议来实现
- protocol可以实现多个接口,通过实现多个接口可以完成多继承
- category一般就是指分类,用category去重写类的方法,仅对本category有效,不会影响到其他类与原有类的关系
简述类别(分类)和延展
- 类别:在没有原类.m的情况下,给该类添加方法。
- 延展:就是给某类添加私有属性和私有方法
区别: - 延展可以认为是一个私有的类目,延展可以添加属性,并且它添加的方法是必须要实现的
- 类别可以在不知道,不改变原来代码的情况下往里面添加新的方法,只能添加不能修改删除
- 类别中的方法优先级大于原类中的优先级,也就是说如果类别中有跟原方法中有重名的方法,会覆盖掉原类中的
- 分类中的@property只能生成getter和setter方法的声明,而不能生成实现以及带下划线的成员属性,如果给分类添加了成员变量,是没办法初始化的
网友评论