黑马程序员技术交流社区

标题: 对于类方法及对象方法的总结 [打印本页]

作者: supergcs    时间: 2014-11-15 00:32
标题: 对于类方法及对象方法的总结
本帖最后由 supergcs 于 2014-11-15 00:41 编辑
  1. #import <Foundation/Foundation.h>

  2. @interface Calculator : NSObject{
  3.     int _sum;//和
  4. }

  5. //求和
  6. //对象方法
  7. -(int)sumWithNumber1:(int)number1 andNumber2:(int)number2;

  8. //类方法的规则:1.以+号开头 2.其他的规则与对象方法相同
  9. +(int)sumWithNumber3:(int)number3 andNumber4:(int)number4;

  10. //求平均值
  11. -(int)averageWithNumber1:(int)number1 andNumber2:(int)number2;

  12. +(int)averageWithNumber3:(int)number3 andNumber4:(int)number4;

  13. +(void)test;

  14. //求差

  15. -(int)subWithNumber1:(int)number1 andNumber2:(int)number2;


  16. +(int)subWithNumber1:(int)number1 andNumber2:(int)number2;


  17. @end


  18. #import "Calculator.h"

  19. @implementation Calculator
  20. //对象方法求和
  21. //number1 = 2   number2 = 4
  22. -(int)sumWithNumber1:(int)number1 andNumber2:(int)number2{
  23.    
  24.     //成员变量可以在对象方法中使用
  25.     _sum = number1 + number2;
  26.    
  27.     return _sum;
  28. }


  29. //类方法求和
  30. +(int)sumWithNumber3:(int)number3 andNumber4:(int)number4{
  31.     //当一个方法当中要使用成员变量的时候,不能用类方法。原因:成员变量的存在依附于对象,在使用类方法的时候,并没有创建对象,所以类方法当中不能使用成员变量。
  32.    
  33.    
  34.     // _sum = number3 + number4;
  35.     return number3 + number4;
  36. }

  37. //对象方法调用自己的类方法
  38. -(int)averageWithNumber1:(int)number1 andNumber2:(int)number2{
  39.    
  40.     int sum2 = [Calculator sumWithNumber3:number1 andNumber4:number2];
  41.    
  42.     return sum2/2;
  43. }

  44. //通过self关键字实现 对象方法调用自己的对象方法
  45. //-(int)averageWithNumber1:(int)number1 andNumber2:(int)number2{

  46. //    [self  sumWithNumber1:number1 andNumber2:number1];

  47. //    return (number1 + number2)/2;

  48. //}

  49. +(int)averageWithNumber3:(int)number3 andNumber4:(int)number4{
  50.    
  51.     int sum1 = [Calculator sumWithNumber3:number3 andNumber4:number4];
  52.    
  53.     return sum1/2;
  54. }

  55. +(void)test{
  56.    
  57.     NSLog(@"进来了");
  58.    
  59.     [Calculator test];
  60. }

  61. -(int)subWithNumber1:(int)number1 andNumber2:(int)number2{
  62.    
  63.     return number1 - number2;
  64. }

  65. +(int)subWithNumber1:(int)number1 andNumber2:(int)number2{
  66.    
  67.     return number1 - number2;
  68. }

  69. @end
复制代码
总结:
一、 对象方法
-(void)lookMyPhone;
1、以-号开头
2、里面可以使用成员变量
3、用对象来调用
4、对象方法可以调用类方法和对象方法

二、 类方法
  1. +(NSString *)colorWithEnumColor:(Color)color;
复制代码
1、以+号开头
2、不可以使用成员变量
3、类名来调用
4、可以作为工具方法
*类方法在调用类方法的时候,不能自己调自己,会造成死循环

*区分同名的对象方法和类方法:根据方法前面的标识符

使用场景:
尽量使用类方法(类方法可以节省内存空间,提高效率)
当有成员变量时,不用使用类方法


作者: 许庭洲    时间: 2014-11-18 09:02
值得学习ing!




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