//OC里面只允许单继承,所以不用:了。//Category也叫类目,是OC中非常重要的语法,高手必备技能,年薪四十万不是梦。//Category是扩展类功能的方法之一。//Category无论有无源代码,都能为类添加功能。一般来说,如果我们有了源代码,通常不用Category,而是直接修改源代码,在源代码中添加方法的声明和实现。所以说Category是为没有源代码的类添加方法,以增强原始类的功能。//Category中的方法与原始类中的方法,没有贵贱之分,都相当于原始类中的方法,都是通过消息发送机制接收的。//通过Category添加的方法,会被原始类的子类继承。例如,我们给字符串类添加了一个Hello方法,那么它的子类可变字符串类也可以使用Hello方法。
//定义Category的语法格式,与定义类的语法格式很相似。包含声明和实现两部分。声明部分,声明你要添加什么方法。实现部分,实现添加的方法。//Category声明的语法格式
/* @interface 原始类类名 (分类名/功能名) 方法列表(与原始类方法列表一样,可以根据我们的需求添加0到多个方法,可以添加类方法,也可以添加实例方法。方法的参数以及类型根据需求自定,有无返回值自定,一切都是自定) @end  //关于分类名,因为一个类可以定义多个分类,所以为了区别各个分类,每个分类都要有自己的名字。这个名字要有意义!!!名字的意义在于表明当前这个分类方法的作用。例如我们现在这个分类名Hello,那么在声明部分我们可以添加sayHi或者Hello的方法,用来打招呼。 */
//Category的实现部分/* @implementation 原始类类名 (分类名) //实现分类中所有的方法 @end */
//Category在外界使用的语法//1、引入分类所在的头文件。注意:分类对应的文件名,格式比较特殊!//  原始类类名 + 分类名.h  原始类类名 + 分类名.m//2、用原始类提供的方法创建对象//3、向这些对象发送新增的消息,如果是类方法,直接向原始类的类名发送消息!!!
//原始类其实就是被扩展的类!!!
//延展是类的扩展中常用的方法,主要是用来管理 本类的私有方法,这些方法不对外公开,外界访问不到,但是这些方法在类的内部能被使用。//定义延展的格式为:/** *  1、在自定义类的.m文件中,@implementation...@end上面,写本类的延展    2、@interface 本类名 ()        延展方法1;        延展方法2;        ...        延展方法n;       @end    3、延展中的方法 放到本类的实现部分实现。 */@protocol MarryProtocol 
//协议 就是一堆方法的声明//其中协议方法分为 必须实现(@required) 以及可选实现(@optional)//协议只有.h文件,协议中的方法 具体怎么实现 是由代理方实现的。
@required//必须实现
- (void)cookDinner;//做饭
- (void)washClothes;//洗衣服
- (void)makeMoney;//挣钱
- (void)doHousework;//做家务
protocol MarryProtocol 
//协议 就是一堆方法的声明//其中协议方法分为 必须实现(@required) 以及可选实现(@optional)//协议只有.h文件,协议中的方法 具体怎么实现 是由代理方实现的。
@required//必须实现
- (void)cookDinner;//做饭
- (void)washClothes;//洗衣服
- (void)makeMoney;//挣钱
- (void)doHousework;//做家务

@optional//可选实现
- (void)takecareBaby;//照看孩子
@end@optional//可选实现
- (void)takecareBaby;//照看孩子
@end