《封装的概念及原理》
1.
封装的原理:实例变量默认只能被当前类的对象访问
2.
将数据隐藏起来,只能用此类的方法函数才可以访问活着设置数据,不可被外部任意存储时面相对象涉设计本质,降低了数据被无用的可能性
3.
在 OC语言中,使用@innterface和@impiementation来处理类
4.
不封装的缺点:当一个类把自己的属性暴露给外部的时候,那么该类就失去了对属性的管理权
5.
封装的步骤:
定义设置实例变量(setter)方法
访问实例变量(getter)的方法
6.
setter方法(设置器)
在setter方法的内部也可以对一些不合理的赋值进行筛选过滤
7.
set方法的作用:为外界提供一个设置成员变量值的方法
8.
命名规范:
方法名必须以set开头
set后面跟上成员变量名称,首字母大写(_age—>setAge)
返回值一定是void
一定要接受一个参数,而且参数类型跟成员变量类型一致
形参名不能与变量名一致
9.
set方法的好处
不让数据暴露在外,保证了数据的安全性
对设置的数据进行过滤
10.
getter方法(访问器)
1)get方法到作用:为调用着返回对象内部的成员变量
2)命名规范
一定要有返回值,返回值类型和成员变量类型一致
方法名和成员变量名一样
不需要接受任何参数
3)set方法实现中,一定要用形参给实例变量赋值
在.h文件中
#import <Foundation/Foundation.h>
typedef enum {kSexMan,kSexWoman,kSexYao}
@interface person : NSObject
{
//定义变量
NSString *_name;//姓名
int _age;//年龄
Sex_sex;//性别
float_height;//身高
//_name的set方法,以后对name设置值,一律用此方法
-(void)setName:(NSString *)name;
-(void)setAge:(int)age;
-(void)setSex:(Sex)sex;
-(void)setHeight:(float)height;
}
-(NSString *)name;
-(int)age;
-(Sex)sex;
-(float)height;
@end
///
在.m文件中
#import "person.h"
@implementation person ;
-(void)setName:(NSString *)name{
_name=name;
}
-(void)setAge:(int)age{
_age=age;
}
-(void)setSex:(Sex)sex{
_sex=sex;
}
-(void)setHight:(float)height{
_height=height;
}
//**********get方法的是实现**********
-(NSString *)name{
return _name;
}
-(int)age{
return _age;
}
-(Sex)sex{
return _sex;
}
-(float)height{
return _height;
}
@end
在main.m文件中
#import <Foundation/Foundation.h>
#include "person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
person *p=[person new];
//设置名称
[p setname:@"王大锤"];
[p setage:23];
[p setsex:ksetyao];
[p sethight:2.00f];
//打印输出个值
NSLog(@"%@,%d,%d,%.2f",[p name],[p age],[p sex],[p height])
}
return 0;
}