构造方法 和 类方法

作者: 光明程辉 | 来源:发表于2015-12-16 23:32 被阅读63次

    【构造方法】

    • 在OC当中,以 init 开头的方法称为构造方法.

    • 作用:

    • 构造方法用于初始化成员变量的值,一般只调用一次。在类创建对象时调用,看下面的图就知道了 有 init 对吧!。

    • 构造方法通常都是有返回值的哇!

    构造方法用来初始化成员变量.png

    [注意:] 在 [Cat alloc] 这个调用方法,很明显可以看出来[类名 类方法],即,那个alloc 是个类方法咯!

    • 由于子类对象可以分为两部分:
    • 1、继承自父类的部分。
    • 2、子类特有的部分。
    • 所以:子类在重写构造方法时需要添加一下代码:
    • 构造方法通常都是有返回值 return 的哇!
    构造方法 init.png

    【self】

    上面的构造方法中使用 self。 是不是,不理解,好吧!下面介绍一下:
    • "类"内部方法相互调用需要使用self 来调用.

    • self表示当前对象地址 谁调用当前函数self就表示谁.

    • 其实 self 就是一个指针嘛!

    [在来回忆一下:]

    • 需求: 写一个构造方法,初始化圆的半径?
    设计一个构造方法.png
    • 然后,实现构造方法:
    在构造方法里初始化成员变量半径 r.png
    • 最后,调用构造方法。这里是不是发现苹果里封装了许多构造方法!(学过一些OC的都知道吧!)
    调用构造方法.png

    2、[类方法:]

    • “-”开头的方法称为对象方法,”+”开头的方法称为类方法。

    • 不属于任何一个对象,通过"类名"调用。例如:[Cat eat];

    • 【特征】:

    • 1、 类方法不能访问成员变量.---->因为 一个类可以创建无数个对象!对吧!例如: Cat *cat1 = [[Cat alloc] init]; , Cat *cat2 = [[Cat alloc] init];, Cat *cat3 = [[Cat alloc] init]; 等等。其中 cat1、cat2、cat3....就是不同的对象!

    • 又因为每个类对象 是具体的事物! 既然是 具体到某个事物,那么,每个对象就有它 一套具体的不同的独一无二的 属性 或字段。

    • 所以:类(太虚了)不能访问 (具体的对象)成员变量!!!

    • 2、类方法不能调用对象的方法
      (因为 类 没有对象,它要创建才有对象,如果创建出来了,那个叫 对象!)

    总结:

    (1)类方法可以用于创建对象或简洁地创建对象.。 开发中能用类方法就尽量用!效率高!
    (2)一个功能模块,可以通过类方法,公开简单易用的对外接口。(这个要有一定的编程量才能体会得到)
    (3)创建单例对象,单例对象可以用于传值。或者创建某个对象太耗费资源又经常使用时,也会创建单例对象。

    相关文章

      网友评论

        本文标题:构造方法 和 类方法

        本文链接:https://www.haomeiwen.com/subject/wiqphttx.html