美文网首页
继承和类别的区别

继承和类别的区别

作者: 嗯哼丶傻大个是你 | 来源:发表于2016-08-24 18:06 被阅读0次

在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。
1.继承Inherit
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性,这个类别无法做到。
示例代码:

// ViewControllerEx.h
@interface ViewControllerEx : UIViewController
//自己需要添加的方法
@end
// ViewControllerEx.m
@implementation ViewControllerEx
// 方法的实现
@end

2.类别category
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
以下两种方式最后使用类别。
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。

// 这里有一个约定俗成的规定,类别文件命名时,是原类名+扩展标识名
// NSString+ex.h
@interface NSString (ex)
// 扩展的类回别方法
@end
// NSString+ex.m
@implementation NSString (ex)
// 方法的实现
@end

相关文章

  • OC中继承和类别的区别:

    OC中继承和类别的区别: 联系: 可以给一个类扩展新的方法,或修改已用的方法; 区别: (1)继承修改的方法不会对...

  • 继承和类别的区别

    在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。1.继承Inherit这个是面向...

  • 继承和类别的区别

    在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。 1.继承Inherit 这个是...

  • 继承和类别的区别

    OC中protocol、category和继承的区别以前还是有点迷糊,面试的时候说的有点混乱,现在结合一些资料总结...

  • HashMap和Hashtable的详细区别

    HashMap和Hashtable的区别1、继承父类不同HashMap继承自AbstractMap类Ha...

  • iOS面试题-常规概念

    简要叙述OC语言的特点 类别的作用?继承、类别和扩展在实现中有何区别? OC中类变量的@protected,@pr...

  • Swift1-1类与结构体区别

    区别: class是引用类型,struct是值类型;(本质区别) class可以继承类、接口和被继承,struct...

  • OC继承和类别的区别

    1.继承Inherit 这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。 对于以下情况,无法使用类别...

  • 继承和扩展、类别的区别

    继承是用来描述类与类之间的关系的。子类继承于父类,拥有父类的属性和方法。 扩展就是向一个已有的类、结构体或枚举类型...

  • Java基础语言学习

    extends 和 implements 的区别 extends是继承类,implements是实现接口。类只能继...

网友评论

      本文标题:继承和类别的区别

      本文链接:https://www.haomeiwen.com/subject/awcosttx.html