美文网首页
OC基础-----> 初始化方法

OC基础-----> 初始化方法

作者: b8028f13eaa2 | 来源:发表于2016-05-19 16:53 被阅读147次

    A ----> 继承概要

    1)面对对象的三大特性:封装、继承、多态

    2)继承即能保证类的完整, 又能简化代码

    3)定义三个类: 普通僵尸、路障僵尸、铁桶僵尸,这三个类有很多重复的实例变量和方法,比如:血量、攻击力、移动速度;行走,攻击,死亡。 面对对象的继承特性大大简化代码。

    把公共的实例变量写在父类里 , 子类只需要写自己独有的实例变量和方法即可。

    B ---- > 继承特点

    1)继承的上层:父类; 继承的下层:子类

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

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

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

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

    C ---- > 重写从父类继承来的方法的不同情况

    1)完全以子类的实现内容为主,丢弃父类实现的内容。

    2)完全以父类的实现内容为主, 没有子类实现的内容

    3)既有父类对该方法的时下, 也有子类对该方法的实现

    D ---- >  super

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

    2) 作用: 给 super 发消息, 可以指向父类该方法的实现

    E ---- > 继承中方法的执行

    1、OC 中方法调用采用消息发送机制 【 receiver message 】;

    2、给 CollegeStudent 对象发送消息 : study

    1)查找本类是否实现 study(重写) 方法 

    2)如果没有, 查找父类中 study 是否实现

    3)逐级向上查找, 找到即执行

    4)如果 NSObject 也没有实现, 会抛出异常, 引起 crash

    F --- > 初始化方法步骤

    1、创建对象分两步:1)为对象分配空间 2)进行初始化操作

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

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

    4、初始化方法实在对象的初始化阶段完成其实例变量的赋值操作,一个对象的初始化阶段只有一次,所以初始化方法只使用一次

    G ---- > 初始化实例

    - ( id )init{

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

    self = [super init];

    // 判断从父类继承过来的 init 方法 是否初始化成功

    if ( self ){

    // 初始化设置

    }

    //返回初始化完成的对象

    return self;

    }

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

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

    H ----  > self

    1、self 是系统关键字。self 在方法中指代当前方法的调用者

    2、self 在实例方法中, 指代调用当前方法的对象

    3、self 在类方法中, 指代当前类

    I ---- > 初始化方法特征

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

    2、id 或 instancetype 类型的返回值

    3、以 init 开头

    4、可以带 0 到多个参数。

    5、内部实现 : 限制性super 初始化方法, 再初始化自身变量, 后 return self

    J ---- > 初始化过程

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

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

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

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

    K ---- > 指定初始化方法

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

    2、虽然有多个初始化方法, 但是一个对象只能使用一个初始化方法。

    例如 : initWithName:     initWithGender:   initWithName: gender:

    3、指定初始化方法 : 无论调用哪一个初始化方法都会调用的初始化方法

    4、通常把初始化想做的全部操作放到指定初始化方法中,这样就无需在每一个初始化方法中都要写一遍,简化代码,方便后期维护

    5、选取原则 : 一般选参数最多的初始化方法作为指定初始化方法

    L ---- > 便利构造器简述

    1、封装类对象创建过程 : 内部实现: 封装了alloc 和初始化操作, 创建对象更加方便快捷

    2、1)便利构造器是 “ + ” 方法

    2)返回本类型的实例

    3)方法名以类名开头

    4)可以有 0 到多个参数  + (id)personWithName :  gender :  age : 

    M ----- > 小结

    1、继承是面对对象的三大特性之一, 合理的继承, 能减少很多 冗余代码,加快开发速度。

    2、初始化方法以 init 开头,在对象的生命周期中只使用一次

    3、遍历构造器封装了对象的创建过程, 进一步简化了创建的步骤。

    相关文章

      网友评论

          本文标题:OC基础-----> 初始化方法

          本文链接:https://www.haomeiwen.com/subject/jliwrttx.html