<封装1_set方法>
一、set方法
1.set方法的使用场合:
@public的成员变量可以被随意赋值,应该使用set方法来管理成员的访问
(类似机场的安检、岁龙头过滤;过滤掉不合理的东西),比如僵尸的生命值不能为负值。
2.set方法的作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值。
3.set方法的命名规范:
* 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写。
* 形参名称不要跟成员变量同名。
二、封装set方法代码示例:
@interface Student : NSObject
{
// @public 成员变量尽量不要用@public
int age;
}
/*
set方法:
1.作用:提供一个方法给外界设置成员变量的值,可以在方法里面对参数进行相应过滤。
2.命名规范:
* 方法名必须以set开头
* set后面跟上成员变量的名称,成员变量的首字母必须大写
* 返回值一定是void
* 一定要接收一个参数,而且参数类型跟成员变量类型一致
* 形参的名称不能跟成员变量名一样
*/
- (void)setAge: (int)newAge;
- (void)study;
@end
@implementation Student
// set方法的实现
- (void)setAge: (int)newAge
{
// 对传进来的参数进行过滤
if (newAge <= 0)
{
newAge = 1;
}
age = newAge;
}
- (void)study
{
NSLog (@"%d岁的学生在学习", age);
}
@end
int main()
{
Student *stu = [Student new];
// stu->age = 20;
[stu setAge: 10];
[stu study];
return 0;
}
<封装2_get方法>
一、get方法
1.get方法的使用场合:
@public的成员变量可以被随意赋值,应该使用get方法来管理成员的访问
(类似机场的安检、岁龙头过滤;过滤掉不合理的东西),比如僵尸的生命值不能为负值。
2.get方法的作用:返回对象内部的成员变量。
3.get方法的命名规范:get方法的名称一般就跟成员变量同名。
二、成员变量的命名规范
* 成员变量都以下划线_开头
* 可以跟get方法的名称区分开
* 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量。
三、封装get方法代码示例:
@interface Student : NSObject
{
// @public 成员变量尽量不要用@public
int age;
}
/*
set方法:
1.作用:提供一个方法给外界设置成员变量的值,可以在方法里面对参数进行相应过滤。
2.命名规范:
* 方法名必须以set开头
* set后面跟上成员变量的名称,成员变量的首字母必须大写
* 返回值一定是void
* 一定要接收一个参数,而且参数类型跟成员变量类型一致
* 形参的名称不能跟成员变量名一样
*/
- (void)setAge: (int)newAge;
/*
get方法:
1.作用:返回对象内部的成员变量。
2.命名规范:
* 肯定有返回值:返回值类型肯定与成员变量的类型一致
* 方法名跟成员变量名一样
* 不需要接受任何参数
*/
- (int)age;
- (void)study;
@end
@implementation Student
// get方法的实现
- (int)age
{
return age;
}
// set方法的实现
- (void)setAge: (int)newAge
{
// 对传进来的参数进行过滤
if (newAge <= 0)
{
newAge = 1;
}
age = newAge;
}
- (void)study
{
NSLog (@"%d岁的学生在学习", age);
}
@end
int main()
{
Student *stu = [Student new];
// stu->age = 20;
[stu setAge: 10];
// NSLog (@"学生的年龄是%d岁", stu-age); // age成员变量是被保护的,无法直接访问
NSLog (@"学生的年龄是%d岁", [stu age]);
return 0;
}
<封装3_成员变量的命名规范>
成员变量的命名规范:一定要以下划线(_)开头
作用:
1.让成员变量和get方法的名称区分开。
2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量。
#import <Foundation/Foundation.h>
typedef enum {
SexMan,
SexWoman
} Sex;
@interface Student : NSObject
{ // 成员变量的命名规范:一定要以下划线(_)开头
int _no;
Sex _sex;
}
// sex的set和get方法
- (void)setSex: (Sex)sex;
- (Sex)sex;
// no的set和get方法
- (void)setNo: (int)no;
- (int)no;
@end
@implementation Student
- (void)setNo: (int)no
{
_no = no;
}
- (int)no
{
return _no;
}
- (void)setSex: (Sex)sex
{
_sex = sex;
}
- (Sex)sex
{
return _sex;
}
@end
int main()
{
Student *stu = [Student new];
[stu setSex: SexMan];
[stu setNo: 10];
[stu sex];
[stu no];
return 0;
}