Objective-C中的继承(extends)和分类(categories)都是扩展已有类的方式,但两者有区别。
继承(extends)
继承允许一个类获取另一个类的属性和方法,是面向对象编程的重要特性。
子类使用extends关键字继承父类:
@interface Son : Father
@end
继承特点:
- 子类获得父类所有属性和方法
- 子类可以重写父类方法
- 继承是is-a关系,继承体系
分类(categories)
分类可以在不修改原类的基础上,扩展已有类:
@interface Father (Extra)
- (void)extraMethod;
@end
分类特点:
- 不影响原有类,无is-a关系
- 可以为类添加方法
- 不能添加实例变量
- 一个类可以有多个分类
区别
- 继承是类与类之间is-a的关系
- 分类是在原类基础上的扩展
- 继承会继承父类所有内容,分类只能添加方法
理解两者区别,可以更好地扩展代码。