【Objective-C】04-OC对象成员变量的封装规范:get方法和set方法



面向对象的三大特性:封装、继承和多态。其中,成员变量的封装非常常用。OC在这点上和C#本质上是一样的,都是用方法对字段进行封装。成员变量封装成属性的优点显而易见,都是不允许外界直接访问成员变量,而只能通过方法来进行访问。如果该成员变量不想被外界调用,只要不提供对外的接口就可以了。通过封装,可以限制外界对成员变量的读和写操作,以及对写set方法中的参数值进行过滤。下面是成员变量的封装规范:

一、成员变量

1.1 成员变量名一般以下划线开头

1.2 成员变量尽量不要用@public

二、get方法

 1、作用:返回对象内部的成员变量
 2、命名规范
 2.1 肯定有返回值,返回值类型肯定与成员变量类型一致
 2.2 方法名跟成员变量名一样
 2.3 不需要接收任何参数

三、set方法 

 1、作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
 2、命名规范:
 2.1 方法名必须以set开头
 2.2 set后面跟上成员变量的名称,成员变量的首字母必须大写
 2.3 返回值一定是void
 2.4 一定要接收一个参数,而且参数类型跟成员变量类型一致
 2.5 形参的名称不能跟成员变量名一样


#import <Foundation/Foundation.h>
@interface Student:NSObject
{
    //成员变量名以下划线开头
    //只读:只允许外界访问我的no,不允许外界修改我的no
    int _no;
    int _age;
}
- (int)no;//获得学号
/*
 get方法:
 1、作用:返回对象内部的成员变量
 2、命名规范
 2.1 肯定有返回值,返回值类型肯定与成员变量类型一致
 2.2 方法名跟成员变量名一样
 2.3 不需要接收任何参数
 */
- (int)age;//获得年龄


/*
 set方法
 1、作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
 2、命名规范:
 2.1 方法名必须以set开头
 2.2 set后面跟上成员变量的名称,成员变量的首字母必须大写
 2.3 返回值一定是void
 2.4 一定要接收一个参数,而且参数类型跟成员变量类型一致
 2.5 形参的名称不能跟成员变量名一样
 */
- (void)setAge:(int)age;//设置年龄

- (void)study;//学习方法
@end

@implementation Student
- (int)no{
    return _no;
}

- (int)age{
    return _age;
}

- (void)setAge:(int)age{
    //如果传递进来的参数小于或等于0,设置为1
    if(age<=0){
        age=1;
    }
    _age=age;
}

- (void)study
{
    NSLog(@"%d岁的学生在学习",_age);
}
@end

int main()
{
    Student *stu=[Student new];
    //设置学生的年龄属性
    [stu setAge:20];
    NSLog(@"学生的年龄是%d岁",[stu age]);
    [stu study];
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值