虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > OC基础:类的扩展.协议

OC基础:类的扩展.协议
类别:C/C++编程   作者:码皇   来源:pheromone     点击:

再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用 类的扩展:为类添加新的特征(属性)或者方法对已知类:1 直接添加2 继承(在其子类中添加实例变量和方法)3 使用extension(对私有方法和私有

 

//再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用.

类的扩展:为类添加新的特征(属性)或者方法

对已知类:

1.直接添加

2.继承(在其子类中添加实例变量和方法)

3.使用extension(对私有方法和私有属性的扩展(未在.h中申明的方法就是私有方法))

 

// extension

// 一般我们把类的延展直接写在类的.m文件中

// extension 对私有方法和私有属性的扩展(未在.h中申声的方法)

// 对已知类扩充私有方法,选择 Objective - C file

// 使用时要把头文件引入,类的延展里可以添加类的实例变量


对未知类:

category 分类,类名,为没有源代码的类添加方法,不能添加实例变量

 

总结:extension 和 category

1.extension为已知类添加私有属性和私有方法.category为没有源代码(未知类)的类添加方法.

2.extension可以添加实例变量(属性),category不能添加实例变量.

3.extension文件可有.h文件, category同时生成一对.h和.m文件

4.extension一般不写代码,写在类的.m文件

 

总结: category 和 subclass(子类)

1.category只能为类添加方法,subclass既能为类添加方法又能添加实例变量

 

2.category新添加的方法成为类的一部分,能被子类继承,subclass新添加的方法只有子类才有,父类不具有

3.category使用原始类的实例(-)或者原始类的调用方法(+),subclass只有子类才能使用

-------------------------------------Protocol 协议-----------------------------------------

 

只要遵守了协议即可成为代理

代理:自己不想干的事情让比人去做,别人充当的就是代理

如果一个类想要遵守一个协议,直接在.h文件中的父类后加<协议名>在协议里面,写必须遵守的方法和可选择遵守的方法

如:

 

@protocol BoyfriendProtocol

@required //必须实现的方法

-(void)makeMoney;

@optional //可选择的实现

-(void)cook; //做饭

-(void)clean; //清洁

-(void)funny; //幽默

@end


 

 

相关热词搜索: 基础