一、继承
继承的上层:父类,继承的下层:子类。 继承是单向的,不能相互继承。 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为。 子类能继承父类全部的特征和行为。
因为没有,所以所有。
面向对象提供了继承语法,能大大简化代码。把公共的方法和实例变量 写在父类里,子类只需要写自己独有的实例变量和方法即可。
继承既能保证类的完整,又能简化代码。
继承的特点:
OC中 只允许单继承 。 没有父类的类称为根类, OC中的根类是NSObject (祖宗)。 继承的内容:所有实例变量和方法。 如果子类不满意父类方法的实现,可以重写父类的方法。
super是编译器指令,并非对象。 作用:给super发消息,可以执行父类中实现的方法。 子类可以重写父类的方法,即:子类既有自己的实现,又有父类继承下来的实现,如果想使用父类的实现,向super发送消息。
二、初始化方法
@class 只是用来声明后边是一个类名,不负责引入文件
@class 用来解决两个类的循环问题,#include 用来解决循环引用的问题
创建对象分两步:开辟空间、初始化。
初始化方法的主要作用是:为某些实例变量赋初值。 初始化方法在对象的整个生命周期里只使用一次。
每一个实例对象在它的生命周期里一定只初始化一次
方法:
学习继承之前,初始化方法,没有self = [super init]字样。我们为实例变量逐一赋值。 学习继承之后,父类中声明了公共的实例变量。作为父类,也应该有自己的初始化方法,为这些公共实例变量赋初值。
子类定义了除父类中公共实例变量之外的实例变量。在自身的初始化方法中,优先向super发送init消息,初始化公共变量,初始化成功之后,再初始化自身特有变量,从而完成全部实例变量的初始化。
过程:
执行父类中实现的初始化方法。(向上递归到NSObject类中的初始化方法)
从根类NSObject开始执行初始化方法。 判断父类中的初始化是否成功,即self是否存在。 完成对象的初始化设置,返回对象。 初始化子类实例变量。
特征:
初始化方法是 “-”方法 id或者instancetype类型的返回值 以init开头 可以带0到多个参数 内部实现:先执行super的初始化方法,再初始化自身变量,return self。
三、便利构造器
便利构造器在初始化方法的基础上前进了一小步。封装了对象创建过程。 便利构造器是“+”方法 ,返回本类型的实例,方法名以类名开头。 可以有0到多个参数。 内部实现:封装了alloc和初始化方法。使用起来更加简洁。
继承的上层:父类,继承的下层:子类。 继承是单向的,不能相互继承。 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为。 子类能继承父类全部的特征和行为。
因为没有,所以所有。
面向对象提供了继承语法,能大大简化代码。把公共的方法和实例变量 写在父类里,子类只需要写自己独有的实例变量和方法即可。
继承既能保证类的完整,又能简化代码。
继承的特点:
OC中 只允许单继承 。 没有父类的类称为根类, OC中的根类是NSObject (祖宗)。 继承的内容:所有实例变量和方法。 如果子类不满意父类方法的实现,可以重写父类的方法。
super是编译器指令,并非对象。 作用:给super发消息,可以执行父类中实现的方法。 子类可以重写父类的方法,即:子类既有自己的实现,又有父类继承下来的实现,如果想使用父类的实现,向super发送消息。
二、初始化方法
@class 只是用来声明后边是一个类名,不负责引入文件
@class 用来解决两个类的循环问题,#include 用来解决循环引用的问题
创建对象分两步:开辟空间、初始化。
初始化方法的主要作用是:为某些实例变量赋初值。 初始化方法在对象的整个生命周期里只使用一次。
每一个实例对象在它的生命周期里一定只初始化一次
方法:
学习继承之前,初始化方法,没有self = [super init]字样。我们为实例变量逐一赋值。 学习继承之后,父类中声明了公共的实例变量。作为父类,也应该有自己的初始化方法,为这些公共实例变量赋初值。
子类定义了除父类中公共实例变量之外的实例变量。在自身的初始化方法中,优先向super发送init消息,初始化公共变量,初始化成功之后,再初始化自身特有变量,从而完成全部实例变量的初始化。
过程:
执行父类中实现的初始化方法。(向上递归到NSObject类中的初始化方法)
从根类NSObject开始执行初始化方法。 判断父类中的初始化是否成功,即self是否存在。 完成对象的初始化设置,返回对象。 初始化子类实例变量。
特征:
初始化方法是 “-”方法 id或者instancetype类型的返回值 以init开头 可以带0到多个参数 内部实现:先执行super的初始化方法,再初始化自身变量,return self。
三、便利构造器
便利构造器在初始化方法的基础上前进了一小步。封装了对象创建过程。 便利构造器是“+”方法 ,返回本类型的实例,方法名以类名开头。 可以有0到多个参数。 内部实现:封装了alloc和初始化方法。使用起来更加简洁。