oc 第三课

主要内容:继承、初始化方法(重点)、便利构造器(重点)

一、继承

继承就是子类继承父类所有的实例变量和方法,父类有的,子类都有,但是子类有的,父类不一定有

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

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

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

把共有的方法和实例变量写到父类中,子类只需要写自己独有的实例变量和方法就可以了,这样大大简化了代码

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

如图所示:

为继承的实现

继承的特点:

1、OC中,只允许单继承

2、没有父类的类称为根类,OC中的根类是NSObject(祖宗)

3、继承的方式:全部都继承

4、如果子类不满意父类的方法,可以重写(overwrite)父类的方法

继承方法的执行:

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

作用:给super发送消息,可以执行父类中的方法

注意:子类重写父类的方法,子类既有自己的实现,又有父类继承下来的实现,如果想使用父类的实现,向super发送消息

二、初始化方法

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

主要内容:为某些实例变量赋初值

初始化方法在对象的整个生命周期里只使用一次

完整的初始化方法示例:

- (instancetype) init

{

/ / 先使用从父类继承过来的方法

self  =  [ super  init ] ;

/ / 判断是否初始分成功

if (self) {

/ / 初始化设置

}

/ / 返回

return  self ;

}

没学继承之前,没有self = [ super  init ]字样,我们逐一为实例变量赋值

学习继承之后,父类中声明了公共的实例变量,作为父类,也应该有自己的初始化方法,为这些公共的实例变量赋初值

初始化过程:

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

2、父类的初始化方法在调用父类的初始化方法,依次向上调用

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

4、回到第三层的初始化方法中,直到本类的初始化方法完成

初始化方法的特征:

1、初始化方法是 “ - ” 开始的

2、id 或者 instancetype类型的返回值

3、以init开头

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

指定初始化方法:

所谓指定初始化方法:就是一个类众多初始化方法中,无论使用哪个初始化方法,总有一个一个初始化方法被调用,这个初始化方法就被称为指定初始化方法

1、一个类可以有很多个初始化方法

2、通常会有一个指定的初始化方法

3、通常把参数最多的初始化方法作为指定初始化方法

4、每个类都有指定初始化方法,如果该类只有一个初始化方法,那么该初始化方法就是指定初始化方法

5、指定初始化方法负责向super发送消息

三、便利构造器

便利构造器在初始化方法的基础上前进了一步,,封装了对象创建过程

便利构造器是 “ + ” 方法,返回本类型的实例,方法名以类名开头

注意:内部实现,封装了alloc 和初始化方法,使用起来更方便

时间: 2024-10-20 02:17:30

oc 第三课的相关文章

第三课 文件系统(上)

unix_c_03.txt====================第三课 文件系统(上)====================一.系统调用------------应用程序 -----------+| |v |各种库 |(C/C++标准库.Shell命令和脚本. |X11图形程序及库) || |v |系统调用 <----------+(内核提供给外界访问的接口函数,调用这些函数将使进程进入内核态)|v内核(驱动程序.系统功能程序)1. Unix/Linux大部分系统功能是通过系统调用实现的.如o

java工程开发之图形化界面之(第三课)

上面我们讲述了通过JOptionPane进行文本I/O操作,一个是通过JOptionPane来获取的 参考链接:http://blog.sina.com.cn/s/blog_993d254201013pgh.html#cmt_3339216 JOptionPane类 1.属于javax.swing 包. 2.功能:定制四种不同种类的标准对话框. ConfirmDialog 确认对话框.提出问题,然后由用户自己来确认(按"Yes"或"No"按钮) InputDialo

shellKali Linux Web 渗透测试— 初级教程(第三课)

shellKali Linux Web 渗透测试— 初级教程(第三课) 文/玄魂 目录 shellKali Linux Web 渗透测试—初级教程(第三课)... 1 课程目录... 1 通过google hack寻找测试目标... 2 一个asp站点的sql注入... 3 一个php站点的sql注入... 4  课程地址:点击 课程目录 两个基本案例,以sql注入入手,目标为熟悉基本的思路,关注细节信息. 关于google hack,web 扫描,sql注入更详细和复杂的内容后续教程会专门讲解

【C语言探索之旅】 第二部分第三课:数组

内容简介 1.课程大纲 2.第二部分第三课: 数组 3.第二部分第四课预告:字符串 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动态分配

BeagleBone Black 板第三课:Debian7.5系统安装和远程控制BBB板

BBB板第三课:Debian7.5系统安装和远程控制BBB板 因为BBB板系统是Debian 7.4,据说使用Debian系统可以实现很多BBB板的无缝连接,可以更好的学习和控制BBB板,所以就决定下载Debian7.5系统安装,采用虚拟机的安装方式. 一.系统安装 1.我下载了Debian7.5 32位系统,有三张DVD盘,网上有不少安装资料了,我这里就不详细介绍安装过程了.不过有一点可能很多人都会遇到的问题,就是安装过程中提示插入光盘的问题.虚拟机是Vmware workstation 10

【Linux探索之旅】第一部分第三课:測试并安装Ubuntu

内容简单介绍 1.第一部分第三课:測试并安装Ubuntu 2.第一部分第四课预告:磁盘分区 測试并安装Ubuntu 大家好,经过前两个比較偏理论(是否想起了带着瓜皮帽,手拿折扇的老学究,或者腐儒)的课程,这第三课我们就正式进入实战啦. 可能不少朋友没使用过Linux这个操作系统,那么这一课就是见识一下它的庐山真面目的时候了. 我们这个系列课程所使用的Linux发行版是Ubuntu,由于其使用广泛.技术支持全面.文档完整,另一个非常关键的原因就是Ubuntu的配色偏"土豪金"啊,有木有.

Spark 3000门徒第三课scala高阶函数总结

今晚听了王家林老师3000门徒spark系列课程的第三课,讲述了scala函数,下面写一下心得: 普通函数:def fun1(name:String){println(name)} 函数赋值给变量:val fun1 = functionName _ 匿名函数:val fun2 = (name:String) => prinln(name) 高阶函数:def bigData(func:(String) => Unit, content: String){func(content)} 返回值是函数

【C语言探索之旅】第三部分第三课:SDL开发游戏之显示图像

内容简介 1.第三部分第三课: SDL开发游戏之显示图像 2.第三部分第四课预告: SDL开发游戏之事件处理 第三部分第三课:SDL开发游戏之显示图像 上一课中,我们学习了如何加载SDL库(SDL_Init),释放SDL库(SDL_Quit),如何打开一个窗口(Window),如何使用表面(Surface). 这些都是SDL库最最基本的操作.暂时,我们只会给窗口自带的表面上点颜色,好像挺乏味的. 这一课我们来学习如何插入图片.上一课我们说过,SDL中绘制图样需要在Surface上进行.Surfa

【连载】创业能力培训第三课总结

创业能力培训第三课总结 一.企业分类: 1.有限公司 2.股份有限公司 3.农民专业合作社 4.民办非企 5.合伙企业(无限责任.非法人企业) 6.个体工商户(无限责任.非法人企业) 7.个人独资企业(无限责任.非法人企业) 二.如何选择企业形态 1.资金来源 2.分配利润 3.决策行为 三.关于创业成功率 1.自助 颜值(个人信用度) 例如:你打个电话出去借钱(不限金额),看看明天一早能够收到多少钱,给你准时打钱并且金额较大的,请关注. 2.他助 有哪些人能帮助你,物质上.精神上等等. 3.天