OC的基础语法(三)

1.类方法的概述以及注意事项

/*
 
 类方法的使用注意:
 1)类方法可以和对象方法同名,他们的调用互不影响
 2)对象只能调用对象方法,类只能调用类方法
 3)类方法也应该在@interface @end 声明,在@implementation  @end之间去实现
 
 
 关于类方法使用易犯的错误
 1)在类方法中使用了成员变量(不允许的)
 2) 在类方法中又调用了自己,则该方法就会陷于一个无线循环状态
 
 */

2.类方法和对象方法的关系

/*
   类方法:
 
    1) 以+ 开头定义的方法
    2) 用类名来调用
    3) 类方法中,不能访问成员变量
    4) 类方法中 能调用其他对象方法,需要满足以下两个条件
 
        1) 对象作为方法的参数传递过来
        2)在类方法中创建新的对象
 
       类方法中,调用自己类的对象方法
 
        1) 把当前的类对象作为方法的参数传递过来
        2)在类方法中,创建一个新的实例对象,调用本类的方法
 
 
   对象方法:
  
    1) 以 - 开头,定义的方法
    2) 以对象名来调用
    3) 对象方法中,可以访问成员变量
    4) 在对象方法中 能 能调用类方法
 
 */

3.封装

/*
 
   封装的核心思想:
 
       把复杂的数据操作隐藏起来,对外只提供接口
 
   原理:
 
       定义对象方法 去访问对象的成员变量
 
 
   不封装的缺点:
 
       对象失去了对对象的成员变量的管理权
 
   封装的步骤:
 
       1)定义设置成员变量的对方方法(setter)-写方法
 
          规范:
          (1)必须是一个对象方法
          (2)方法名必须以set开头
          (3)必须是set+成员变量去掉下划线首字母大写
           (4) 必须没有返回值
           (5) 必须有一个参数
          (6)参数的类型必须和成员变量的类型一致
           (7) 形参名 一般情况下 是成员变量去掉下划线部分
          (8) set方法的实现必须是给成员变量赋值
 
                格式:成员变量  =  形参变量
 
 
 
               float _money
 
               //这样就封装了一个对 _money 设置值得一个方法
               -(void)setMoney:(float) money;
 
 
               //实现
               -(void)setMoney:(float) money{
                     _money = money;
               }
 
       2)获取对象的成员变量(getter)值 --- 读方法
 
           规范:
           (1)必须是一个对象方法
           (2)必须有返回值,反回值类型必须和成员变量的类型一致
            (3) 方法名是 成员变量 去掉下划线部分
            (4) 方法一定没有参数
            (5) 必须返回成员变量
 
 
            -(float)money;
 
 
            -(float)money{
 
               return _money;
            }
 */

代码如下:

main.m

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Person *p = [Person new];

        
        [p setMoney:-12.3f];
        
        NSLog(@"%.2f",[p money]);
    
    }
    return 0;
}

Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    
    float _money;

}

-(void)giveMoney:(float) money;

//封装对_money操作的方法
//设置_money值的方法(setter)
-(void)setMoney:(float) money;

//封装获取_money值得方法
-(float)money;
@end

Person.m

#import "Person.h"

@implementation Person
-(void)giveMoney:(float) money{

    //做一个判断,如果钱是负数,不再设定
    if(money>0){
        
        _money = money;
        
        NSLog(@"money:%.2f",_money);
    }

}




-(void)setMoney:(float) money{


    //设定成员变量值
    //成员变量 = 形参变量
    if (money>0) {
        _money = money;
    }
    

}

//封装获取_money值得方法
-(float)money{

    //返回成员变量的值
    return _money;

}

@end

 

posted @ 2015-10-16 09:09  ios开发那点事  阅读(197)  评论(0编辑  收藏  举报