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

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

OC基础-----> 初始化方法_第1张图片

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基础-----> 初始化方法)