黑马程序员_OC中的set方法和get方法

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

由于@public的成员可以被随意赋值,所以成员变量尽量不要用@public,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数。

 set方法
 1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
 2.命名规范:
 1> 方法名必须以set开头
 2> set后面跟上成员变量的名称,成员变量的首字母必须大写
 3> 返回值一定是void
 4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
 5> 形参的名称不能跟成员变量名一样

get方法
 1.作用:返回对象内部的成员变量
 2.命名规范:
 1> 肯定有返回值,返回值类型肯定与成员变量类型一致
 2> 方法名跟成员变量名一样
 3> 不需要接收任何参数

代码示例:

#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    int _age;
    int _no; 
}

- (void)setAge:(int)age;

- (int)age;

- (void)study;

@end

@implementation Student

- (void)setAge:(int)age
{
    // 对传进来的参数进行过滤
    if (age <= 0)
    {
        age = 1;
    }
    
    _age = age;
}

- (int)age
{
    return age;
}

- (void)study
{
    NSLog(@"%d岁的学生在学习", _age);
}

@end

通过set方法和get方法可以将对象数据封装起来,封装的好处:

1.过滤不合理的值

2.屏蔽内部的赋值过程

3.让外界不必关注内部的细节

由于对象属性没有用@public修饰,所以不能直接访问外界不能直接访问对象的属性,只能通过set方法和get方法来间接访问和设置对象属性,怎么通过set方法和get方法来间接访问和设置对象属性呢?

实例代码:

int main()
{
    Student *stu = [Student new];
    
    [stu setAge:10];
     
    NSLog(@"学生的年龄是%d岁", [stu age]);
    
    [stu study];
    
    return 0;
}
第5行通过set方法[stu setAge:10]将对象成员_age的值设置为:10。
第7行通过get方法[stu age]取出 对象成员_age的值。

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值