OC基础第三讲):继承 初始化方法 便利构造器

//OC第三讲:继承 初始化方法  便利构造器

        

       //继承:继承的上层是父类(冒号后边),下层是子类(冒号前边),继承是单向的,不能互相继承,继承具有传递性,A继承于B,B继承于CA具有BC的特征和行为,子类能继承父类所有的特征和行为

        

        /*

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

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

         

        继承的特点:OC中只允许单继承

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

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

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


 /*继承中方法的执行:若A继承B,B继承C,C继承D,D继承object 

         [A eat];A对象发送消息eat;

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

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

         3,逐级向上查找,直到找到执行为止

         4,如果最后一个类也没有实现eat方法,程序会崩溃(不过会报错,程序运行不下去)

         

         

         

         super 是编译指令,并非对象

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

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

          */

          /*

         

         ************************初始化方法*******************************

         

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

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

          初始化方法在整个对象生命周期内只调用一次(内存的分配到回收期间)

         

           完整的初始化方法:

           -idinit{

           self = [super init];

           if(self){

              子类在自己的初始化设置

             }

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

           return self;

           }

         

           

          学习继承之前,初始化方法并没有self=[super init];字样。我们为实例变量逐一赋值,

          学习了继承之后,父类中声明了公共的实例变量。作为父类,也有自己的实例变量,为这些公共实例变量赋值

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

          在自身初始化过程中,优先向super发送init方法。初始化公共变量,初始化成功之后,再初始化自身特有的变量,从而完成所有实例变量的初始化

           

           

           初始化的过程:

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

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

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

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

           

           初始化方法的特征:

           初始化方法是“-”方法

           返回值是id或者instancetype类型

           init开头

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

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

           

         */


/*第三部分:便利构造器


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

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

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

         

         实现部分:

         1.实现:声明和实现便利构造器

         

         

         2.使用便利构造器创建对象

         

         */



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值