对象的属性
一个对象主要有两个方面:属性与方法。对于对象来说属性相当于个人隐私,那么对象是如何保护自己的隐私呢?这也就是所谓的封装。
在OC中我们使用set、get方法完成对成员变量(对象属性)对封装。外界只能通过get方法,获得成员变量的值,只能通过set方法、设置变量的值。
一、set方法
set方法的作用:为外界提供一个设置成员变量值的渠道
命名规范:
(1)方法名必须以set开头
(2)Set后面跟上成员变量的名称,首字母大写
(3)返回值一定是void
(4)一定要接收一个参数,而且参数类型需要和成员变量的类型一致
(5)形参名不能喝成员变量名一样(苹果官方推荐成员变量名前加_以示区分)
set方法的声明:
//person类
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int _age;
}
//set方法的声明
-(void) setAge:(int)age;
@endset方法的实现:
#import "Person.h"
@implementation Person
-(void) setAge:(int)age
{
_age=age;
}
@end
二、get方法
get方法的作用:为外界提供一个获取成员变量值的渠道
命名规范:
(1)一定有返回值,返回值的类型和成员变量的类型一致
(2)方法名和成员变量名一样
(3)不需要接收任何参数
get方法的声明:
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int _age;
}
//set方法的声明
-(void) setAge:(int)age;
//get方法的声明
-(int) getAge;
@endget方法的实现:
#import "Person.h"
@implementation Person
-(void) age:(int)age
{
_age=age;
}
//get方法的实现
-(int)age
{
return _age;
}
@end
三、点语法
对于有get、set方法的成员变量,我们可以通过对象+.+变量名的方法来访问。
如:
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建人对象
//默认构造函数
Person *lele=[[Person alloc]init];
lele.age=10;//相当于 [lele setAge:10]
int age=lele.age;//相当于 [lele age]
[lele release];
}
return 0;
}本质上,点语法就是调用set、get方法。当成员变量没有初始化时,点语法相当于set方法,其它情况相当于get方法。
本文介绍Objective-C中如何通过set和get方法实现成员变量的封装,包括命名规范、方法声明及实现,并展示了点语法的使用。
129

被折叠的 条评论
为什么被折叠?



