---------------------- 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培训、期待与您交流! ----------------------