黑马程序员_OC对象的属性

本文介绍Objective-C中如何通过set和get方法实现成员变量的封装,包括命名规范、方法声明及实现,并展示了点语法的使用。

对象的属性

一个对象主要有两个方面:属性与方法。对于对象来说属性相当于个人隐私,那么对象是如何保护自己的隐私呢?这也就是所谓的封装。
在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;

@end

set方法的实现:

#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;

@end

get方法的实现:

#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方法。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值