——黑马程序员——OC中数据的封装

来源:互联网 发布:误清空回收站恢复软件 编辑:程序博客网 时间:2024/06/05 08:10

-----------android培训java培训、java学习型技术博客、期待与您交流!-----------

OC中数据的封装

一、封装的概念

封装:类的属性暴露在外不安全,为了防止修改将数据和操作的可能性,对外界只提供一个接口

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 <Foundation/Foundation.h>@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;}@endint 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;}





1 0
原创粉丝点击