我们在写ios程序的时候,常常发现所用到的那个类里面的方法或属性不够用,这时候我们就想往那个类里面添加一些我们想要的属性或方法。有两种方法可是实现:分别是: 1、继承
2、Category类目
这时有人会问:什么时候使用继承?什么时候使用Category?他们两个谁优谁劣?
说到这个问题,我们需要了解继承和Category的特性
继承:在继承中有两个概念,子类和父类(或者说子类和超类),子类和父类的关系 是, 父类拥有的方法和属性子类都拥有,全部继承过来(换句话说,父类是一代产品, 功能少,而子类是第二代升级产品,有一代产品的功能之外,还额外拥有新升级 的功能。在程序中体现为,子类可以使用父类的方法和属性, 而父类不可以使 用子类的方法和属性,父类可以出现的地方,子类都可以出现)。因为继承的这个 特性,我们可以在子类里添加或重写我们所额外需要的 属性和方法(也就是二代 产品的升级功能,在一代产品的基础上修改和添加);
继承的工作方式:1、方法调度,程序运行时,先从子类里面找方法,子类里面 没有,就去父类里面找,可以一直找到最初的父类(所以子 类的方法优先级比父类高)
2、属性调度,程序运行时,先从父类里面找方法,父类里面 没有,再去子类里面找,所以子类的的属性最好不要覆盖 父类的属性
使用场景:希望重写原有类的方法,希望添加属性时使用继承,比如自定义UI控 件,在继承上修改添加以达到自己想要的控件
Category:如果说继承的关系的纵向扩展添加,那么Category就是横向的扩展添加(在原 有的类里再添加方法)。Category只能添加方法,不能添加属性,而且使用 Category时尽量不要修改覆盖原有类的方法。
使用场景:多个人团队开发一个类的时候使用;
对于最后一个谁优谁劣的问题,我们只能就使用场景而论,各有所长