zoukankan      html  css  js  c++  java
  • 黑马程序员——类方法

    ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

    黑马程序员——类方法

     

    ------- android培训IOS培训、期待与您交流! ----------

    ****类方法优点****

    1、节省空间,提高效率,作为工具的时候使用

    2、类方法比对象方法优化体现在不用创建对象就能执行行为。 在内存中, + 识别为类方法, 直接去类的存储空间中调用方法。 对象方法则需要通过对象指针访问对象, 通过指针访问类空间, 才能调用到方法

    3、类方法不用创建一个实例,不依赖任何对象的方法

     

     1 #import <Foundation/Foundation.h>
     2 @interface Cat : NSObject
     3 {
     4     @public;
     5     int speed;
     6     }
     7 + (void) cat:(int)speed;  //声明一个类方法
     8 @end
     9 @implementation Cat
    10 + (void) cat:(int)speed   //类方法的实现
    11 {
    12     NSLog(@"正在以%d速度跑",speed);
    13 }
    14 @end
    15 int main (int argc, const char *argv[]) 
    16 { 
    17     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];                         
    18    
    19     //在此处输入Objective-C代码
    20     [Cat cat:200];
    21     [pool drain];
    22     return 0;
    23 }
    24 /*
    25 声明和实现:
    26 @interface Cat : NSObject
    27 + (void) cat;  //声明一个类方法
    28 @end
    29 @implementation Cat
    30 + (void) cat   //类方法的实现
    31 {
    32     NSLog(@"在爬树");
    33 }
    34 @end
    35 int main()
    36 {
    37     [Cat cat];  //通过类名调用类方法
    38     
    39 }

    类方法调用:[类名称 类方法名称];

    注意:

    1、类不能调用对象的方法, 对象不能调用类的方法。

    ***2、类方法不能使用类的实例变量(成员变量)***

    ****类方法实现****

    + (void) cat

    {

       NSLog(@"正在以%d速度跑",_speed);//错误代码:不能使用成员变量

    }

    ****对象方法实现****

    - (void) cat

    {

       NSLog(@"正在以%d速度跑",_speed);//可以使用成员变量

    }

     

    3、类方法可以从父类继承,子类可以重写类方法

    ***4、当方法内部不需要访问成员变量时, 就可以使用类方法。

     

    对象方法:

    以“-”开头

    可以使用成员变量

    用对象调用对象方法

    对象方法可以调用当前对象或其他对象的方法

       1、当前对象方法中创建对象(当前的也可以是其他类对象),使用新创建的对象调用对象方法

       2、使用self

       3、对象作为方法的参数传递过来,可以使用传递过来的对象调用方法

    类方法:

    以“+”开头

    不可以使用成员变量

    用类名调用类方法

    类方法可以调用当前类或其他类的方法

       1、可以直接使用本类类名(或者其他类名)调用方法

       2、可以使用self

    类方法不能调用自身,防止死循环

      

    在类方法中调用对象方法注意:

    1、对象作为方法的参数传递过来

    2、可以创建一个对象

     

    self与super关键字介绍

    **self**

        self是个指针, 指向调用它的变量 (可能是类, 也可能是对象)。

        self用在方法当中代表方法调用者, 谁调用这个方法, self就代表谁

    self在对象方法中应用

       在对象方法中使用其指代的是访问当前方法的对象

       - (void) run

    {

            NSLog(@"人在吃!");

    }

    - (void) eat

    {

            [self run];      // 使用self调用其它对象方法

            NSLog(@"人在跑");

    }

    self在类方法中应用

       在类方法中使用其指代的是当前类。不能调用对象方法, 因为self代表调用该方法的类。

       + (void) run

    {

            NSLog(@"人在吃!");

    }

    +(void) eat

    {

            [self run];      // 使用self调用其它类方法

            NSLog(@"人在跑");

    }

     

    **self**

    函数内部怎样定义和全局变量同名的变量:

    self->变量名=局部变量名

    访问的是类的实例变量

    **super**

        发送消息可以将方法实现分发其父类。可以重写一个已有的方法来修改获奖它添加到现有方法中,仍然可以将原始的方法纳入到修改后的方法中

    ------- android培训IOS培训、期待与您交流! ----------

  • 相关阅读:
    一個SQL排序的問題[轉]
    行數據轉換成列數據
    asp页面转化成htm静态页面
    DataGrid 中間隔色的實現
    asp.net里导出excel表方法汇总[轉]
    C#中计算两个时间的差
    asp.net面试的题目
    页面间传输中文的乱码解决方法
    NickLee 多層菜單
    Add an onclick event in the DataGrid for any Column
  • 原文地址:https://www.cnblogs.com/gaozp/p/4907197.html
Copyright © 2011-2022 走看看