22-oc构造方法基本概念

构造方法

 在OC中init开头的方法, 我们称之为构造方法

 

构造方法的用途

构造方法的用途: 用于初始化一个对象, 让某个对象一创建出来就拥有某些属性和值

 

如何实现构造方法

重写init方法, 在init方法中初始化成员变量

 


 

重写init方法

 

重写init方法必须按照苹果规定的格式重写, 如果不按照规定会引发一些未知的错误

必须先初始化父类, 再初始化子类

必须判断父类是否初始化成功, 只有父类初始化成功才能继续初始化子类

返回当前对象的地址

- (instancetype)init

{

    // 1.初始化父类

    // 只要父类初始化成功 , 就会返回对应的地址, 如果初始化失败, 就会返回nil

    // nil == 0 == 假 == 没有初始化成功

    self = [super init];

    // 2.判断父类是否初始化成功

    if (self != nil) {

        // 3.初始化子类

        // 设置属性的值

        _age = 6;

    }

    // 4.返回地址

    returnself;

}

 


 

 

注意子类构造方法中一定要使用super调用父类的方法

 

自定义构造方法

自定义构造方法就是自定义一个init方法

 

有时候我们需要在创建某个对象的时候,让对象的某些属性就具有值,这时候就需要传入一些参数给对象的属性,为了满足这个需求,就需要自定义构造方法

 

自定义构造方法的格式

一定是对象方法

一定返回id/instancetype

方法名称一定以init开头

- (instancetype)initWithAge:(int)age;

 


 

自定义构造方法在继承中的表现

 

自己的事情自己做,属于谁的属性就由谁来进行操作

父类的属性交给父类的方法来处理,子类的方法处理子类自己独有的属性

 

自定义构造方法在子类,如何调用的父类构造方法的

 子类在重写自定构造方法时,一般使用super调用父类的构造方法,先让父类将父类的属性进行初始化

- (instancetype)initWithAge:(int)age andName:(NSString *)name andNo:(int)no

{

    if (self = [super initWithAge:age andName:name]) {

        _no = no;

    }

    returnself;

}

 


 

posted @ 2016-03-04 19:41  wc&Home  阅读(304)  评论(0编辑  收藏  举报