OC学习总结1 继承(Inherit)和类别(category)、扩展(extension)的区别
展开全部
1.继承Inherit
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)在子类中新扩展的方法与原方法同名,但是还需要使用父类的实现要用继承。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性和实例变量,这个类别无法做到。
2.类别category
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
以下两种方式最后使用类别。
类别的特点:
类别在实际中的应用:
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。
3.类的扩展
OC中的扩展只是在.m文件中@implementation之上加一段@interface~@end,在其中声明变量属性和方法。在本身的@implementation中实现。
扩展就像是匿名的类别,扩展中声明的实例变量和属性、方法都是私有的。扩展中声明的方法可以不实现(但会有issues提示)。
(应当注意的是OC中的扩展和swift中的扩展完全是两回事。swift中的扩展基本上完全相当于OC的类别。)
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)在子类中新扩展的方法与原方法同名,但是还需要使用父类的实现要用继承。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性和实例变量,这个类别无法做到。
2.类别category
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。
以下两种方式最后使用类别。
类别的特点:
类别在实际中的应用:
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。
3.类的扩展
OC中的扩展只是在.m文件中@implementation之上加一段@interface~@end,在其中声明变量属性和方法。在本身的@implementation中实现。
扩展就像是匿名的类别,扩展中声明的实例变量和属性、方法都是私有的。扩展中声明的方法可以不实现(但会有issues提示)。
(应当注意的是OC中的扩展和swift中的扩展完全是两回事。swift中的扩展基本上完全相当于OC的类别。)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询