打个比喻来形容类别与继承的区别,苹果的产品线有一款产品叫ipod,除了打电话之外,其他功能和iphone差不多,但是价格却只有iphone的三分之一左右,于事就有厂家生产出一款ipod的用的外壳,套上这个外壳后ipod就能打电话了,这就和类别相似,在原来的基础上拓展出新的功能,但是原来的产品丝毫没变,因为你把外壳拿掉之后他还是一个ipod. 而继承的话就好像把ipod打开,直接替换里面的主板,芯片等硬件,使其拥有你想要的功能. 所以很容易得出结论,一般情况下用类别是首选(苹果官方也是推荐用类别),用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。但是如果需要在重写的时候,还要调用原来的方法,就需要用继承了。分类是完全重写,无法调用原来的同名方法。

另外顺带提一点用类别的好处,就是你只要引用了类别头文件的类都能使用到类别的新方法,但是继承的话,你要将原来的所有代码重构一遍

原创文章,转载请注明出处,谢谢!