分类(category) 和 继承(inherit) 的区别

  • 分类可以在不知道系统类源代码的情况下,为这个类添加新的方法;
  • 分类只能添加方法,不能添加成员变量。通过分类增加的方法,系统分类增加的方法,系统会认为是该类的一部分

// 比如

#import 

@interface UIImage (WB)

/**
* 返回一张自由拉伸的图片
*/
+ (UIImage *)resizedImageWithName:(NSString *)name;
@end
详细说明:
  • UIImage是系统的类,在不知道UIImage类源代码的情况下,仍然可以通过分类为该类添加新的方法。而且这个方法成为了该类的一部分。若有其他的类继承自UIImage类,则UIImage的子类全部拥有resizedImageWithName:这方法。
从这个角度来看,分类和继承最大的区别在于:
  • 子类继承了父类,子类中增加的方法,不会成为父类的一部分,即:假设A继承自UIImage,在类A中增加一个resizedImageWithName:方法,父类UIImage并不能使用这个方法,当有新的B类,继承UIImage时,类B没有resizedImageWithName:方法。
  • 继承可以添加方法,也可以添加成员变量,当然,这个成员变量,也仅限于子类中使用

应用点

  • 父类的方法声明可以不实现,在继承于父类的子类中实现方法,而且,在子类中不必要再声明;
  • 分类中的方法,必须实现。

你可能感兴趣的:(分类(category) 和 继承(inherit) 的区别)