OC-继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC-继承相关的知识,希望对你有一定的参考价值。

继承既保证了类的完整,又能简化代码

把公共的方法和实例变量卸载父类里,子类只需要写自己独有的实例变量和方法即可。

关于继承的一些特性

/*

没有父类的类成为根类,OC中的根类是NSObject

继承的上层称为:父类

继承的下层成为:子类

继承的内容是所有的实例变量和方法

继承是单向的,不能相互继承

继承具有传递性

如过子类不满父类方法的实现,可以重写父类的方法

*/

super是编译器指令,并非对象

给super发消息,可以执行父类该方法的实现

OC中方法的调用采用的是消息发送机制,[receiver message];

初始化方法的作用:为某些实例变量赋初值

初始化方法在对象的整个生命周期只使用一次(注:初始化方法是在对象的初始化阶段完成其实例变量的赋值操作,一个对象的初始化阶段只有一次,所以初始化方法只使用一次)

- (id)init {

//给super发送init消息:执 类中实现的init 方法

self = [super init];

//判断从 类继承过来的init 法是否初始化成功
if (self) {

//初始化设置 }

//返回初始化完成的对象

return self;

}

子类定义了除父类中公共实例变量外的所有实例变量

(注意:在自身的初始化方法中,优先向super发送init消息,初始化公共变量,初始化成功之后,初始化成功之后,再初始化自身特有变量,从而完成全部实例变量的初始化)

self是系统关键字,self在方法中指代方法的调用者

self在实例方法中,指代调用当前方法的对象

self在类方法中,指代当前类

1. 》 初始化方法的特征 

/*

初始化方法是"-"方法。

id或者instancetype类型的返回值

以init开头

可以带0 到 多个参数

 

内部实现: 先执行super的初始化方法,再初始化自身变量,后return self;

*/

1.自己的初始化方法中,优先调用类的初始化方法。

2. 父类的初始化 方法中再调用父类的初始化方法,依次往上调 。

3.处于最上层的初始化完成之后,回到第二层的初始化方法中, 完成第二层的初始化。

4. 第二层的初始化完成之后,回到第三层的初始化方法中,依次执行初始化方法,直到本类的初始化方法完成。 

指定初始化方法

/*

指定初始化方法:无论调用哪一个初始化方法都会调用的初始化方法

通常会把在初始化时想做的操作全部放到指定初始化方法中,这杨就无需再每一个初始化方法中都写一遍,简化代码,方便后期维护。

选取原则:一般选参数最多的初始化方法作为指定初始化方法

*/

便利构造器

/*

便利构造器封装了对象的创建过程

内部实现:封装了alloc和初始化操作,创建对象更加方便快捷

便利构造器是"+"方法。

返回 本类型 的实例

方法名以类名开头

可以有0 到 多个参数

*/

 

 

以上是关于OC-继承的主要内容,如果未能解决你的问题,请参考以下文章

OC-继承

OC面向对象—继承

(Object-C)学习笔记 --OC的内存管理封装继承和多态

oc知识点 初始化方法

,继承

OC的动态继承编译机制