和果子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

继承、初始化方法

继承

1.基本概念

继承的上层—父类, 继承的下层—子类, 子类继承父类全部的特征和行为。

根类(NSObject): 没有父类的类

继承是单向的,不能相互继承,且OC中只允许单继承

继承具有传递性

2.Super

super是编译器指令,并非对象,而self是指针(即对象)

作用:调用从父类继承的实例方法

子类可以重写父类的方法(这个方法无需在子类中重复声明),当子类重写父类的方法后,子类会调用自己重写后的方法,如果要调用父类的方法,则需要给super发消息[super 方法名]。

 

初始化方法

 

创建对象步骤:分配空间 -> 初始化(为新开辟的空间赋值)

 完整的初始化方法(3步):

 子类中定义了除父类中公共实例变量之外的实例变量。在自身的初始化方法中,先向super发送init消息,初始化公共实例变量,初始化成功后,在初始化自身特有变量,从而完成全部实例变量的初始化。

//  声明自定义初始化方法( 3个参数)(指定初始化方法)

-(id)initWithNo:(int)no withName:(NSString *)name withAge:(int)age

{

    //  优先调用从父类继承过来的初始化方法

    self = [super initWithName:name withAge:0];

    //  判断初始化是否成功,如果初始化成功,在初始化自身持有的实例变量

    if (self) {

        _no = no;

    }

    //  返回对象

    return self;

}

初始化方法特征:’-’方法(实例方法);返回值是(id)或者(instancetype);init开头;可以带0~多个参数。内部实现:先执行super的始化方法,再初始化自身变量,最后返回对象 return self.

指定初始化方法:一个类含有多个初始化方法,无论执行哪个初始化方法,总有一个初始化方法被调用,这个方法就是初始化方法。一般选参数最全的初始化方法作为指定初始化方法

//  使用实例方法创建学生类对象

Student *pStu = [[Student alloc] initWithName:@"小王" withAge:18 withNo:28

便利构造器

便利构造器是’+’方法(类方法),方法名以类名开头,返回本类型的实例

内部实例:封装了alloc(开辟空间)和初始化方法(init)

//  实现方法

+(id)personWithName:(NSString *)name withAge:(int)age

{

    Person *p = [[Person alloc] initWithName:name withAge:age];

    return p;

}

//  使用便利构造器创建对象

Person *p = [Person personWithName:@"小王" withAge:66];

 

posted on 2014-04-25 21:24  和果子  阅读(183)  评论(0编辑  收藏  举报