码迷,mamicode.com
首页 > 其他好文 > 详细

oc 第三课

时间:2014-11-18 00:22:51      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:oc   面向对象   继承   

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

一、继承

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

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

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

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

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

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

       如图所示:

              为继承的实现

bubuko.com,布布扣

         继承的特点:

                1、OC中,只允许单继承

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

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

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

         继承方法的执行:

bubuko.com,布布扣

             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发送消息

bubuko.com,布布扣

三、便利构造器

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

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

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

bubuko.com,布布扣

oc 第三课

标签:oc   面向对象   继承   

原文地址:http://blog.csdn.net/phui93/article/details/41211725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!