OC类的封装


一、类的封装
1.类封装的好处:把成员变量封装起来,不会被对象随便操作,赋值,要通过方法才可以对成员变量赋值,保障了成员变量的安全性
下面举个例子:
一个学生类,具有年龄属性,然后给他赋值,输出该学生的年龄
#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    @public //注意,此处使用public,是为了能让对象给成员变量赋值
    int age;//学生年龄
}
//没有定义方法
@end

@implementation Student
//暂时没有需要实现的方法
@end

int main()
{
 
    Student *s = [Student new];
    s->age=24;//给学生年龄赋值24岁
    
    NSLog(@"该学生的年龄是:%d岁",s->age);
    
    return 0;
}

以上代码运行输出结果: 该学生年龄是:24岁结果输出正确,但是假如给学生年龄赋值-24呢?
#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    @public <span style="font-family: Arial, Helvetica, sans-serif;">/注意,此处使用public,是为了能让对象给成员变量赋值</span>

    int age;//学生年龄
}
//没有定义方法
@end

@implementation Student
//暂时没有需要实现的方法
@end

int main()
{
 
    Student *s = [Student new];
    s->age=-24;//给学生年龄赋值-24岁
    
    NSLog(@"该学生的年龄是:%d岁",s->age);
    
    return 0;
}

代码输出结果是 该学生的年龄是:-24岁这显然不符合我们的实际逻辑,因此,我们需要把成员变量给
封装起来,不要被对象随便赋值,这里用到了类的set方法和get方法

成员变量的变量名命名规范:成员变量变量名前要加“_”

 set方法

 1.作用:提供一个方法给外界设置成员变量值

 2.命名规范:

 1>方法名必须以set开头

 2>set后面跟上成员变量的名称,成员变量的首字母必须大写

 3>返回值一定是void

 4>一定要有一个参数,并且参数类型和成员变量类型一致

 5>形参名不能和成员变量名一样

 get方法

 1.作用:返回对象内部的成员变量的值

 2.命名规则

 1>肯定有返回值,而且参数类型和成员变量类型一致

 2>方法名和成员变量名一样

 3>不需要接受参数

 

利用set方法和get方法对以上代码进行修改

#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    //@public  注意此处注释掉了@public
    int _age;//学生年龄
}
- (void)setAge:(int)newAge;
- (int)age;
@end

@implementation Student
- (void)setAge:(int)newAge;
{
    if(newAge<1)
    {
        newAge=1;
    }
    _age=newAge;
}
- (int)age
{
    return _age;
}
@end

int main()
{
 
    Student *s = [Student new];
   // s->age=-24;//给学生年龄赋值-24岁
    [s setAge:24];
    int c = [s age];
    NSLog(@"该学生的年龄是:%d岁",c);
    
    return 0;
}

利用set方法对成员变量的值进行过滤,保证所赋的值符合实际,利用get方法获取成员变量的值


注意点:在声明成员变量的时候,前面不要加“@public”,如果添加的话就会使成员变量暴漏在外面,

起不到封装的作用


以上是对封装的理解和认识,有什么不足之处,请大家多多指点








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值