------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!
封装
OC是一门面向对象的语言,而面向对象有三大特性:封装(成员变量)、继承和多态。在OC语言中,使用@interface和@implementation来处理类。@interface是OC语言暴露在我们面前的,@implementation里的实现是隐藏起来的,把具体的实现封装起来。为什么要封装呢?其实当一个类把自己的类暴露给外部的时候,该类及失去了对属性的管理权。封装起来的不可被外部任意存储是面向对象的本质。
如何实现封装,其实是通过set和get方法,下面我们详细的介绍下这两张方法。
Set方法的作用:为外界提供一个设置成员变量值的方法
命名规范:
(1)set方法一定是一个对象方法
(2)方法名必须以set开头
(3)Set后面跟上去掉下划线的成员变量的名称,首字母大写
(4)一定没有返回值
(5)一定要接收一个参数,而且参数类型需要和成员变量的类型一致
(6)set方法的形参名一般是去掉下划线的实例变量名
(7)形参名不能和成员变量名一样(苹果官方推荐成员变量名前加_以示区分)
Set方法的好处:
(1)不让数据暴露在外,保证了数据的安全性
(2)对设置的数据进行过滤
Set方法使用示例:
#import<Foundation/Foundation.h>
@interface Person : NSOcject
{
//这里不再使用@public关键字
int _age;
}
//set方法的声明,接受一个参数
-(void)setAge:(int)age;
-(void)print;
@end
@implementation Person
//set方法的实现
-(void)setAge:(int)age{
_age=age;
}
-(void)print{
NSLog(@"age=%d",_age);
}
@end
int main(int argc,const char * argv[])
{
Person *p=[Person new];
[p setAge:10];
[p print];
return 0;
}
get 方法的作用:为调用者返回对象内部的成员变量
命名规范
(1)一定有返回值,返回值的类型和成员变量的类型一致
(2)方法名是去掉下划线的成员变量名
(3)不需要接收任何参数
(4)一定是个对象方法
(5)get方法实现中一定是返回实例变量值
get方法的示例:
#import<Foundation/Foundation.h>
@interface Person : NSOcject
{
//这里不再使用@public关键字
int _age;
}
//set方法的声明,接受一个参数
-(void)setAge:(int)age;
//声明get方法
-(int)age;
@end
@implementation Person
//set方法的实现
-(void)setAge:(int)age{
_age=age;
}
//get方法的实现
-(int)age{
return _age;
}
@end
int main(int argc,const char * argv[])
{
Person *p=[Person new];
[p setAge:10];
NSLog(@"%d",[p age]);
return 0;
}