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-继承的主要内容,如果未能解决你的问题,请参考以下文章