初始化方法

本文详细介绍了面向对象编程中的继承概念及其特点,并通过实例解释了super与self的作用。此外,还深入探讨了初始化方法、指定初始化方法及便利构造器的概念与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、继承
  面向对象的三大特性:封装、继承、多态。
  继承:既能保证类的完整,又能简化代码。把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可。
  继承的特点:
  1. 没有父类的类称为根类,OC中的根类是NSObject(祖宗)。
  2. 继承的上层:父类,继承的下层:子类。
  3. 继承的内容:所有的实例变量和方法。
  4. 继承是单向的,不能互相继承。
  5. 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为。
  6. 如果子类不满意父类方法的实现,可以重写(overwrite)父类的方法。重写不需要在重写不需要在.h文件里显示声明,只需要在.m文件里重新实现。当在外面main函数调用时,会默认调用重写的方法。屏蔽掉,会继续调用父类的方法。
二、super self
  super:编译器指令,并非对象。
  作用:给super发消息,可以执行父类该方法的实现。当需要重写父类的方法时,如果不知道父类的方法的实现是什么,最好先使用super调用一下父类对该方法的实现然后再去写自己的代码。
  重写从父类继承过来的方法的三种情况:
  1. 完全以子类的实现内容为主,丢弃父类实现的内容。
  2. 完全以父类的实现内容为主,没有子类实现的内容。
  3. 既有父类对该方法的实现,也有子类对该方法的实现。
  self:系统关键字,在方法中指代当前方法的调用者。实例方法中,指代调用当前方法的对象。类方法中,指代当前类。
三、初始化方法
初始化方法在对象的生命周期中只使用一次。
  初始化方法特征:
  1. 初始化方法是”-“方法。
  2. id或者instancetype类型的返回值。
  3. 以init开头。
  4. 可以带0到多个参数。
  内部实现:先执行super的初始化方法,再初始化自身变量,后return self。
示例:

-(instancetype)init
{
    //给super发送init消息:执行父类中实现的init方法
    self = [super init];
    //判断从父类继承过来的init方法是否初始化成功
    if (self) {
        //初始化设置
    }
    //返回初始化完成的对象
    return self;
}

四、指定初始化方法
  指定初始化方法:无论调用哪一个初始化方法都会调用的初始化方法。
  通常会把初始化时想做的操作全部放到指定初始化方法中,这样就无需在每一个初始化方法中都要写一遍,简化代码,方便后期维护。
  选取原则:一般选参数最多的初始化方法作为指定初始化方法.
  示例:

- (instancetype)initWithName:(NSString*)name age:(NSInteger)age sex:(NSString *)sex
{
    self = [super init];
    if (self) {
        _name = name;
        _age = age;
        _sex = sex;
    }
    return self;
}

五、便利构造器
  便利构造器:封装了对象创建的过程。
  内部实现:封装了alloc和初始化操作,创建对象更加方便快捷。
  特征:
  1. 便利构造器是”+”方法。
  2. 返回本类型的实例。
  3. 方法名以类名开头。
  4. 可以有0到多个参数。
  示例:

+(Person *)personWithName:(NSString *)name age:(NSInteger)age sex:(NSString *)sex
{
    Person *p = [[Person alloc] initWithName:name age:age sex:sex];
    return p;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值