-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------
封装:类的属性暴露在外不安全,为了防止修改将数据和操作的可能性,对外界只提供一个接口
OC中数据不封装的缺点:当一个类把自己的属性暴露给外部的时候,那么该类就失去了对属性的管理权
封装的原理:实例变量默认的只能被当前类的对象方法访问
在OC中数据封装又称设置实例变量的方法和访问实例变量的方法,也称setter方法和getter方法,
set方法的作用:
1、不让数据暴露在外面,保证了数据的安全性
2、在set方法内部可以对一些不合理的赋值进行筛选
命名规范:
1、set方法必须以set开头,set方法是一个对象方法
2、set后面跟去掉下划线的实例变量名称,首字母大写
3、set方法返回值一定是void
4.、一定要有一个参数,而且参数类型要和成员变量类型一致
5、形参名不能和实例变量名一样,形参名一般是去掉 下划线的成员变量名
get方法的作用:
命名规范:
1、get方法一定是一个对象方法,
2、get方法一定有返回值,返回值的类型和实例变量的类型要相同
3、get方法的方法名是去掉下划线的实例变量名
4、get方法一定没有参数
5、get方法实现中,一定是返回实例变量的值
例如:
对set、get方法的声明
@interface Person: NSObject
{
//姓名
NSString *_name;
//年龄
int _age;
//性别
NSString *_sex;
//身高
flaot _height;
}
//===========set方法的声明===========
-(void) setName:(NSString *) name;
//int _age
-(void) setAge: (int) age;
//NSString *_sex
-(void) setSex: (NSString *) sex;
// float _height
-(void) setHeight: (float) height;
//此后如果对成员变量设置值的时候都用此方法
//===========get方法的声明===========
-(NSString *) name;
-(int ) age;
-(NSString * ) sex;
-(float) height;
@end
//此后如果对成员变量获取值的时候都用此方法
对set、get方法的实现
@implementation Person
//*************set方法的实现**************
-(void) setName:(NSString *) name{
//用形参 name 给实例变量 _name 赋值
_name = name;
}
//int _age
-(void) setAge: (int) age{
_age = age;
}
//NSString *_sex
-(void) setSex: (NSString *) sex{
_sex = sex;
}
// float _height
-(void) setHeight: (float) height{
_height = height;
}
//*************get方法的实现**************
-(NSString *) name{
return _name;
}
-(int ) age{
return _age;
}
-(NSString * ) sex{
return _sex;
}
-(float) height{
return _height;
}
@end
#import
@interface Person: NSObject
{
//姓名
NSString *_name;
//年龄
int _age;
//性别
NSString *_sex;
//身高
float _height;
}
//===========set方法的声明===========
-(void) setName:(NSString *) name;
//int _age
-(void) setAge: (int) age;
//NSString *_sex
-(void) setSex: (NSString *) sex;
// float _height
-(void) setHeight: (float) height;
//此后如果对成员变量设置值的时候都用此方法
//===========get方法的声明===========
-(NSString *) name;
-(int) age;
-(NSString *) sex;
-(float) height;
@end
//此后如果对成员变量获取值的时候都用此方法
//对set、get方法的实现
@implementation Person
//*************set方法的实现**************
-(void) setName:(NSString *) name{
//用形参 name 给实例变量 _name 赋值
_name = name;
}
//int _age
-(void) setAge: (int) age{
_age = age;
}
//NSString *_sex
-(void) setSex: (NSString *) sex{
_sex = sex;
}
// float _height
-(void) setHeight: (float) height{
_height = height;
}
//*************get方法的实现**************
-(NSString *) name{
return _name;
}
-(int ) age{
return _age;
}
-(NSString * ) sex{
return _sex;
}
-(float) height{
return _height;
}
@end
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//创建一个对象
Person *p = [Person new];
//给对象成员变量_name赋值
[p setName: @"张三"];
//给_age赋值
[p setAge: 10 ];
//给_sex赋值
[p setSex: @"男"];
//给_height赋值
[p setHeight: 1.5f];
//打印出值
NSLog(@"%@ %d %@ %f", [p name], [p age], [p sex], [p height] );
[pool drain];
return 0;
}