一、继承
继承是指一个新类拥有被继承类(父类)的全部属性和方法。例如,只有继承NSObject,才有创建对象的能力。NSObject是大部分类的基类(根类,root class)。
当A类继承B类,A类就拥有B类中所有成员变量(属性)和方法。这也是继承的主要目的。
- 使用场景:当我们可以说通B是一个A时,就可以使用B继承A类。
- 继承的好处:代码重用;
- 继承的缺点:父类的改变影响所有的子类,子类与父类耦合度很高。当子类中需要有自己独特的行为,不想使用父类的方法,可以把父类的方法覆盖掉,直接在子类中用一样的名字写个方法。不用在.h中写,因为父类已经声明过了,直接在.m中重写。如果重写了父类的方法,但还想使用父类的功能。则使用super。用来调用父类的方法。可以认为,super就是指父类。
- 在继承体系中方法调用的顺序:1)在自己类中找;2)如果没有就去父类中找;3)如果父类中没有,就去父类的父类中找……直到找到基类。
二、分类
分类(Category)作用:扩展已有类的功能。
1)为原来的类增加方法;
2)在方法内部可以访问原有类的成员变量(但这些成员变量一定要定义在头文件中)
操作方法:
1)为原有的类创建一个分类;
2)在分类中增加新的方法的声明和实现
在左侧栏目文件夹处右键-New File-Objective-C File-File Type选Category-Class选你还要扩展的那个类-File填分类名称(不是文件名称)。
三、类扩展
在.m文件中为类增加私有的成员变量(属性)和方法。
在左侧栏目文件夹处右键-New File-Objective-C File-File Type选extension-Class选你还要扩展的那个类-File填分类名称(不是文件名称)。但通常直接在原类.m文件里写:@interface 原有类名()——这是一个常用的方法,特别是在带xib的控制器页面,一些控件我们通常用类扩展的方式,存在扩展里面,这样使得这些控件成员是私有的,不会被外界干扰到。