zoukankan      html  css  js  c++  java
  • 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];

     

  • 相关阅读:
    Asp.net core 2.0.1 Razor 的使用学习笔记(三)
    Asp.net core 2.0.1 Razor 的使用学习笔记(二)
    Asp.net core 2.1 Razor 的使用学习笔记(一)
    免费ssl证书申请和在IIS上启用https的使用教程
    ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(四)—用户注册
    花生日记,网赚兼职____宝妈邀您加入精英团队
    excel中如何将时间戳转换为日期格式
    laravel 5.5 oauth2.0 跨域问题解决方案
    在自己的linux服务器上面部署ShowDoc
    Linux 环境下安装 Nginx+php+mysql 开发环境
  • 原文地址:https://www.cnblogs.com/liuyu521/p/3690175.html
Copyright © 2011-2022 走看看