黑马程序员技术交流社区

标题: 类方法与对象方法比较,以及类方法的使用 [打印本页]

作者: 安若曦    时间: 2015-9-10 17:17
标题: 类方法与对象方法比较,以及类方法的使用

  1. /*
  2. 对象方法
  3. 1> 减号 - 开头
  4. 2> 只能由对象来调用
  5. 3> 对象方法中能访问当前对象的成员变量(实例变量)

  6. 类方法
  7. 1> 加号 + 开头
  8. 2> 只能由类(名)来调用
  9. 3> 类方法中不能访问成员变量(实例变量)

  10. 类方法的好处和使用场合
  11. 1> 不依赖对象,执行效率高
  12. 2> 能用类方法尽量用类方法
  13. 3> 场合:当方法内部不需要使用成员变量时,就可以改为类方法

  14. 可以允许诶方法和对象方法同名
  15. */

  16. /*
  17. 设计一个计算器类
  18. *求和
  19. *求平均值
  20. */

  21. #import <Foundation/Foundation.h>

  22. //工具类:基本没有任何成员变量,里面的方法基本都是类方法
  23. @interface Caculator : NSObject
  24. //求和类方法的声明
  25. +(int)sumWithNum1:(int)num1 andNum2:(int)num2;
  26. //求平均值类方法的声明
  27. +(int)averageWithNum1:(int)num1 andNum2:(int)num2;
  28. //求积的类方法的声明
  29. +(int)multiplyWithNum1:(int)num1 andNum2:(int)num2;

  30. @end


  31. @implementation Caculator
  32. //求和类方法的实现
  33. +(int)sumWithNum1:(int)num1 andNum2:(int)num2
  34. {
  35.     return num1 + num2;
  36. }
  37. //求平均值类方法的实现
  38. +(int)averageWithNum1:(int)num1 andNum2:(int)num2
  39. {
  40.     //调用类方法求和  然后再用 求和值 去求 平均值
  41.     int sum = [Caculator sumWithNum1:num1 andNum2:num2];
  42.     //
  43.     return sum / 2;
  44. }
  45. //求积类方法的实现
  46. +(int)multiplyWithNum1:(int)num1 andNum2:(int)num2
  47. {
  48.     return num1 * num2;
  49. }

  50. @end


  51. int main()
  52. {
  53.     //调用类方法求和
  54.     int sum = [Caculator sumWithNum1:10 andNum2:13];
  55.     NSLog(@"sum = %d",sum);
  56.     //调用类方法求平均值
  57.     int average = [Caculator averageWithNum1:10 andNum2:12];
  58.     NSLog(@"average = %d",average);
  59.     //调用类方法求积
  60.     int multiply = [Caculator multiplyWithNum1:3 andNum2:4];
  61.     NSLog(@"multiply = %d",multiply);

  62.     return 0;
  63. }
复制代码

使用类方法可以提高代码性能。不像对象方法一样,需要重新申请内存空间。但是类方法用在基本没有任何成员变量的时候。



作者: 克莱斯勒    时间: 2015-9-10 18:11
收着...............
作者: a124113798    时间: 2015-9-10 18:22
类方法可以调用对象方法吗?
对象方法可以调用类方法吗?
作者: 安若曦    时间: 2015-9-10 19:13
a124113798 发表于 2015-9-10 18:22
类方法可以调用对象方法吗?
对象方法可以调用类方法吗?

都是不可以的。说的很清楚:类方法只能用类来调用,对象方法只能用对象来调用。
作者: 安若曦    时间: 2015-9-10 19:15
克莱斯勒 发表于 2015-9-10 18:11
收着...............

脚踏实地的学习中
作者: a631082744    时间: 2015-9-10 20:08
学习了^^^
作者: huahaoL    时间: 2015-9-10 20:11
这么吊,,,厉害




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2