A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chunhuayun 中级黑马   /  2015-10-4 17:47  /  635 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 chunhuayun 于 2015-10-4 17:49 编辑

一、类方法学习引入
1、类方法概述
【实例方法】就是一个方法,它在类的一个具体实例的范围内执行,也就是说,在你调用一个实例方法前,必须先创建一个类的对象。
【类方法】不需要创建一个实例
+开头表示类方法,就是类调用方法,不依赖于任何对象的方法
-开头表示对象方法 ,只能是对象可调用。

2、类方法的调用
不同于实例方法的[对象名 方法名]
其格式为:
[类名  方法名]

例如:
  1. #import <Foundation/Foundation.h>
  2. @interface Calculator : NSObject
  3. //返回两数相加值
  4. +(int) add:(int)a and:(int)b;
  5. @end

  6. @implementation Calculator

  7. +(int)add:(int)a and:(int)b{
  8.     return a + b;
  9. }
  10. @end
  11. int main(int argc, const char * argv[])
  12. {

  13.     @autoreleasepool {
  14.         
  15.         int result = [Calculator add:2 and:3];
  16.         printf("result = %d",result);
  17.     }
  18.     return 0;
  19. }
复制代码

打印结果:
result = 5

【类方法的好处】
1)不需要创建实例,也就是不需要分配内存空间,因此可以节省很多内存空间。
2)类方法可以与实例方法同名,而且互不影响
3)类方法可以从父类继承,子类可以重写类方法
4)类方法和实例方法一样在interface中声明
5)类方法只能通过类名来调用,对象方法只能通过对象来调用

二、类方法易犯错误
1、类方法的优点
1)节省内存空间
2)提高了效率
3)作为工具方法

2、类方法的易犯错误
1)在类方法中使用了类的成员变量。这样做是会报错的。

3、类方法和对象方法的比较
1)对象方法
以“-”号开头
可以调用类成员变量
需要类的实例(对象)调用
可以调用当前对象的其他方法,或其他对象的方法
可以使用self
2)类方法
以“+”号开头
不可以调用类成员变量
用类名直接调用
可以调用其他对象的方法(是通过将对象作为参数传递进来,也可以创建一个对象)
可以调用其他类方法(注意不是对象方法),但是不能调用自身(否则会进入死循环)
A>可以使用本类类名或其他类名调用



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马