1.父类和子类
我们在定义一个新类的时候,经常会遇到现有的类不能满足需求的时候,如果可以在已有类的基础上追加内容或者修正来定义新类,那么将变得很简单。
像这种通过扩展或者修改既有类来定义新类的方法继承。在继承关系中,被继承的类称为父类。通过继承关系新建的类称为子类。
继承意味着子类继承了父类的所有的特性,父类的数据成员和成员函数自动成为子类的数据成员和成员函数除此之外,子类还可以
●追加新的方法
●追加新的实例变量
●重新定义父类中的方法
当然子类中只追加新的实例变量而不变更方法则没有意义。子类中重新定义父类的方法叫做重写
图中类B,类C是类A的子类。类B继承了类A的实例变量和方法,但重写了method2,类C中增加了新的实例变量y,新增了方法method3,无论类A、类B、类C都能执行方法method1和方法method2
2.类的层次结构
NSObject是Cocoa环境下的根类,Cocoa中所有的类都直接或间接地继承了NSObject。 新建的任何类或它的继承类的子类。NSObject中定义了所有Objective-C对象的基本方法
3.继承的定义
@interface 类名 : 父类
{
实例变量的声明;
}
方法的声明
@end
方法的声明中只需追加新增的方法。如果覆盖父类已声明的方法(重写),则需要接口中对方法的重重新声明。通常我们会给重写的方法加上注释,一边理解
3.追加新方法的例子
#import <UIKit/UIKit.h>
#import "ParentListArrange.h"
@interface customStateController : ParentListArrange/*父类是 ParentListArrange */
@end
这里使用了ParentListArrange作为父类,并引用头文件#import "ParentListArrange.h"。ParentListArrange的父类是NSObject,所以ParentListArrange也是NSObnect的派生类
4.指定初始化方法
根据需求有时可能需要一个类定义多个不同的初始化方法。
例如1.既需要提供一个可指定每个参数初始值的初始化方法,有需要提供一个每个参数都直接使用默认值的初始化方法
2.既需要提供一个用内存变量进行初始化的初始化方法,又需要提供一个能从文件读入变量完成初始化的初始化方法