类别(category)和继承的区别

类别

  • 类别:类别是对一个功能完备的类的一种补充,就像是一个东西的主要基本功能都完成了,可以用类别为这个类添加不同的组件,使得这个类能够适应不同情况的需求。比如animal这个类,具有eat和run等方法,想给这个类添加一个bark的方法,可以用类别。

假设你接到一个大项目:计算两个整数的和,差。

#import <Foundation/Foundation>

@interface Calculate :NSObject

@property  int number1,number2;

- (int) sumNumber1:(int)num1 andNumber2: (int)num2;//加法

- (int) subNumber1:(int)num1 andNumber2: (int)num2; //减法

- (void)print;

@end

几天后,客户需求发生变化,不仅需要加法,减法功能,还要能做到乘除。我们的做法一般是直接在Calculate类中添加乘,除的方法。当然在这里是没有任何问题的。但是在现实的项目中,代码量十分巨大,以及业务逻辑相当复杂的情况下,直接修改之前源代码是冒有很大的风险的!我们现在可以利用分类解决这个问题

#import <Foundation/Foundation>

#import”Calculate”//既然是对原有类的接口的扩展,所以必须包括原始接口

@interface Calculate(MulAndDiv)//告诉编译器这是为Calculate定义的分类名为MulAndDiv

- (int) MulNumber1:(int)num1 andNumber2: (int)num2;//乘法

- (int) DivNumber1:(int)num1 andNumber2: (int)num2; //除法

@end


继承

  • 继承:多个类具有相同的实例变量和方法时,考虑用继承。即子类可以继承父类的相同特性。如animal具有年龄和体重两个属性,dog也具有年龄和体重两 个属性,dog可以继承animal的这两个属性,即为继承。
  • 共同点:都是给一个类进行扩展
  • 区别:
    • 1.类别是对方法的扩展,不能添加成员变量。继承可以在原来父类的成员变量的基础上,添加新的成员变量
    • 2.类别只能添加新的方法,不能修改和删除原来的方法。继承可以增加、修改和删除方法。
    • 3.类别不提倡对原有的方法进行重载。继承可以通过使用super对原来方法进行重载。
    • 4.类别可以被继承,如果一个父类中定义了类别,那么其子类中也会继承此类别。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,262评论 0 2
  • 一.成员变量与局部变量的区别 成员变量:在类中定义,用来描述对象将要有什么(属性)。可被本类方法和其他跟当前类有关...
    jeffierw阅读 559评论 0 0
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,091评论 0 4
  • 类别 类别:类别是对一个功能完备的类的一种补充,就像是一个东西的主要基本功能都完成了,可以用类别为这个类添加不同的...
    语安月月鸟阅读 533评论 0 0
  • 一.Category 分类就是对一个类的功能进行扩展,,让这个类能够适应不不同情况的需求.在一般的实际开发中,我们...
    Vison_朝花夕拾阅读 746评论 0 0