OC-封装
一、 set方法和get方法
1. set方法和get方法的使用场合
@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数
2. set方法
1) 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
2) 命名规范:
- 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写
- 形参名称不要跟成员变量同名
3. get方法
1) 作用:返回对象内部的成员变量
2) 命名规范:get方法的名称一般就跟成员变量同名
4. 成员变量的命名规范
- 成员变量都以下划线 _ 开头
- 可以跟get方法的名称区分开
- 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
5. 封装的好处
- 过滤不合理的值
- 屏蔽内部的赋值过程
- 让外界不必关注内部的细节
#import <Foundation/Foundation.h> //声明 @interface Car : NSOvject { int _wheels;//成员变量 } //set 方法 - (void)setWheels:(int)wheels; //get 方法 - (void)wheels; @end @implementation Car //set方法实现 - (void) setWheels:(int)wheels { if(wheels <= 0) { wheels = 1; } _wheels = wheels; } //get 方法实现 - (int) wheels { return _wheels; } @end
#import <Foundation/Foundatrio.h> @interface Student : NSObject { @public int _age; Sex _sex; } //1,set开头 2,变量首字母大写 //3,返回值一定为void 4,一定接受一个参数,参数类型跟成员变量类型一致 //5,参数名称不能跟成员变量一样 - (void)setAge:(int)age; - (void)study; @end @implementation Student - (void)setSex:(Sex)Sex { _sex = sex; } - (void)setAge:(int)newAge { if (newAge <= 0) { newAge = 1; } _age = newAge; } - (int)age//get方法 { return age; } - (void)study { NSLog(@"%d 岁的学生在学习", age); } @end int main() { Student *stu = [Student new]; [stu setAge:0]; [stu study]; NSLog(@"学生的年龄是%d岁", [stu age]);//调用get方法 ruturn 0; }