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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  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. }
复制代码

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


6 个回复

倒序浏览
收着...............
回复 使用道具 举报
类方法可以调用对象方法吗?
对象方法可以调用类方法吗?
回复 使用道具 举报
a124113798 发表于 2015-9-10 18:22
类方法可以调用对象方法吗?
对象方法可以调用类方法吗?

都是不可以的。说的很清楚:类方法只能用类来调用,对象方法只能用对象来调用。
回复 使用道具 举报

脚踏实地的学习中
回复 使用道具 举报
学习了^^^
回复 使用道具 举报
这么吊,,,厉害
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马