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

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

// 比如

#import <UIKit/UIKit.h>

@interface UIImage (WB)

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

应用点

  • 父类的方法声明可以不实现,在继承于父类的子类中实现方法,而且,在子类中不必要再声明;
  • 分类中的方法,必须实现。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 继承(Inherit) 好处:可以抽取重复代码;建立类之间的关系;子类可以拥有父类的方法和属性; 注意点:不可以和...
    哎呦哎呦小葵花阅读 613评论 0 1
  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 1,285评论 0 2
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,698评论 0 11
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,219评论 30 472
  • 有时候删除记忆也是一种提醒,至少能让人知道还有人存在 极其不想麻烦别人,觉得别人没有必要必须为你做什么,心里总有一...
    汤小鸢阅读 108评论 0 0