03 继承 初始化方法 便利构造器

一 继承

1)简述

继承的上层: 父类,继承的下层:子类;

继承是单向的,不能相互继承;

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

子类能继承父类全部的特征和行为;

2)继承的实现


@interface Student :Person//学生继承Person


{

   NSString *_className;

   CGFloat _height;//身高

}

3)继承的特点

OC中只允许单继承;

没有父类的类称为根类,OC中的根类是NSObject(祖宗);

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

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

4)继承中方法的执行



二 初始化方法

1)简述

学习继承之前,初始化方法,没有self = [ super init]字样,我们为实例变量逐一赋值;

学习继承之后,父类中声明了公共的实例变量,作为父类,也应该有自己的初始化方法,

为这些公共实例变量赋初值;

创建对象分两步:开辟空间,初始化;

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

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

初始化方法中,优先向super发送init开头的消息(初始化公共变量),初始化成功后再初始化自身特有变量,从而完成全部实例变量的初始化

 self = [super initWith: name score:score]; //super 表示父类继承过来的方法 , self 表示自己的方法

2)初始化方法特征

- (instancetype)initWithName:(NSString *)name;

 1)是" - "(对象)方法

 2)类型的返回值 id 或 instancetype类型的返回值

 3)方法名(init…)以init开头;

 4)可以带0~n个参数

  5)内部实现:先执行super的初始化方法,再初始化自身变量,return self


这里super

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

作用:给super发消息,可以执行父类中实现的方法;

         直接调用父类中的某个方法;

 super处在对象方法中,那么就会调用父类的对象方法

 super处在类方法中,那么就会调用父类的类方法

使用场景:子类重写父类的方法时,想保留父类的一些行为

子类可以重写父类的方法,即:子类既有自己的实现,又有父类继承下来的实现,

如果想使用父类的实现,向super发送消息;

//实现自定义初始化方法

- (instancetype)initWithName:(NSString *)name

                       score:(CGFloat)score

                   className:(NSString *)className

                      height:(CGFloat)height

{

    //1.先去使用去父类继承过来的方法

    self = [superinitWith: namescore:score];//super表示父类继承过来的方法 , self表示自己的方法

    //2.判断初始化是否成功,成功后在初始化自己的实例变量

    if (self) {//判断是否存在 if(self !=nil)

       _className = className;

       _height = height;

    }

    //3.返回

    return self;

}


三 便利构造器

1)简述

便利构造器在初始化的基础上前进一小步,封装了对象创造;

变量构造器是" + "(类)方法,返回本类型的实例,方法名以类名开头person…;

可以带0~n个参数;

内部实现:封装了allco和初始化方法,使用起来更加简洁

2)实现

 1)声明和实现便利构造器

+ (instancetype)personWithName:(NSString *)name

                         score:(CGFloat)score

+ (instancetype)personWithName:(NSString *)name score:(CGFloat)score

{

   Person *person = [[Personalloc]initWith:namescore:score];

   return person;

}

 2)使用便利构造器创建对象

//创建一个 Person 类型的对象

    Person *per = [[Personalloc]initWith:@"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值