OC-继承、初始化方法、便利构造器概念

继承的上层:父类  继承的下层:子类

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

继承具有传递性:A继承与B,B继承与C;A具有B和C的特征和行为

子类继承父类所有的特征和行为


面向对象提供了继承语法,能够简化代码,把共有的方法和实例变量写在父类里边,子类只需要写自己独有的实例变量和方法即可

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


继承的特点

OC中允许单继承

没有父类的类称为根类。OC中的根类是NSObject

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

如果子类不满足父类的方法实现,子类可以重写(overwrite)父类的方法


继承中方法执行:

如:A继承B B继承C C继承D D继承NSObject

         [A eat]

         A对象发送消息eat

         1.查找本类中实现或者重写eat方法

         2.如果本类没有实现,就去上一级的父类去查找是否实现eat

         3.逐级查找eat方法,直到找到执行为止

         4.如果到最后一个类也没有实现eat方法,程序会崩溃


super是编译指令并非对象

作用:给super发送消息,可以执行父类中实现的方法,子类可以重写父类的方法,子类既有自己的实现又有父类继承下来的实现,如果要使用父类的实现,向super发送消息即可


初始化方法:

创建对象分两步:开辟空间    初始化

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

初始化方法在整个对象生命周期内只调用一次

完整的初始化方法

         -idinit{

         //super发送init消息:即执行父类中的init方法

         self = [super init];

         if(self){

              //子类自己的初始化设置

         }

         初始化完成,返回对象自己本身

         return self;

         }


学习继承之前,初始化方法并没有self = [super init];字样。我们为实例变量逐一赋值
学习继承之后,父类中声明了公共的实例变量,作为父类,因为有自己的初始化方法,为这些公共实例变量赋值
在自身初始化过程中,优先向super发送init方法。初始化公共变量,初始化成功后,在初始化自身特有的变量,从而完成所有实例变量的初始化

初始化过程:

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

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

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

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


初始化方法特征:

         1.初始化方法用“-”方法

         2.返回值是id或者instancetype类型

         3.init开头

         4.可以带0到多个参数(也就是咱们的自定义初始化方法)

         5.内部实现:先执行super的初始化方法,在初始化自身变量,最后return self

         

         

         便利构造器:在初始化方法的基础上前进了一小步,封装了对象的创建过程(也就是把alloc init方法封装到对象内部)

         便利构造器“+”方法,只能类去调用,可以添加参数

         内部实现:封装了alloc init 方法,使用起来更简洁。

























1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值