继承是OC面向对象编程的三大特性之一
当多个类出现部分相同的实例变量和方法时,就要考虑使用继承
继承的使用:将多个类中相同的实例变量和方法提出来写成一个公共的父类
子类继承父类:子类会将父类中除了声明为 @private 的实例变量以及私有方法之外的内容直接继承,
当子类和父类有同样的内容时,可以将这些相同的内容从子类中删除.另外,子类从父类继承过来的实例
变量和方法,就属于子类所有(也就相当于将父类的内容复制一份放在子类中).
私有方法:在.m文件中实现了,但是没有在.h文件中声明的方法,叫做私有方法.私有方法不允许在外部
访问,只能在本类中访问.
从父类继承过来的方法,子类又实现了一次该方法,称为重写父类方法.
继承父类方法时会存在三种情况:
1.保留父类对该方法的实现(不重写该方法)
2.按子类重写之后的方法来实现(完全重写该方法)
3.一个方法既有父类对该方法的实现,也有子类对该方法的实现.(在原方法的基础上修改该方法)
自定义初始化方法:
对于自己写的类,我们一般都会自己写一个自定义的初始化方法,在创建对象时,使用该方法进行初始化,这里
以一个Person类为例,代码实现如下
- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
self = [super init];
if (self) {
_name = name;
_gender = gender;
_age = age;
}
return self;
}</span>
初始化方法是对对象进行初始化,因此是一个减号方法.
初始化完成返回该对象,因此返回值类型为 id 类型.
初始化方法的方法名一般以 init 开头,然后 + With + 对参数的描述
便利构造器方法:
便利构造器,顾名思义,就是方便我们创建对象时使用的.在方法内部为我们实现了开辟空间的过程,仍然
以Person为例,代码如下
+ (id)personWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age
{
return [[Person alloc] initWithName:name gender:gender age:age];
}</span>
便利构造器用于类创建对象,使用对象是类,因此是一个加号方法.
内部通过开辟空间,然后调用已经写过的自定义的初始化方法,完成对象的创建,最后返回对象.