• OC基础第三讲


    继承、初始化方法

    继承

    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];

     

  • 相关阅读:
    Ext JS 学习笔记
    ASP中令人震撼的Debug类(VBScript)
    texttransform的使用
    综合搜索引擎代码
    做技术,切不可沉湎于技术
    站长常用广告代码的表达大全
    ASP中一个字符串处理类(加强)(VBScript)
    Asp中一些FSO方面的函数
    没有Javascript,纯CSS下拉菜单IE,FF
    ASP中一个字符串处理类(VBScript) 原版
  • 原文地址:https://www.cnblogs.com/liuyu521/p/3690175.html
Copyright © 2020-2023  润新知