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

-----------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;
}
@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;
}





  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值