黑马程序员--IOS基础--Objective C学习--面向对象特性之--封装

面向对象编程有三大特性:
封装
继承
多态
OC 作为面向对象的语言,也具有上述三大特性。本博文主要探讨其第一个特性—–封装。从三个方面阐述其特性:
什么是封装?
如何进行封装?
封装的优缺点?

什么是封装?
OC 中指对成员变量的封装。

如何进行封装?
在OC 中,可以使用get and set 方法来管理成员的访问,对对象进行封装。
set 方法: 提供一个方法给外界设置成员变量值(相当于对一个对象的某些属性进行读写操作)
get 方法:返回对象内部的成员变量(对对象属性的只读操作)
Take an example:写一个年龄判断的程序,年龄的有效值:1-100,正常输出其值。过滤其他值,返回1,并输出其真实年龄。

#import <Foundation/Foundation.h>
@interface Student : NSObject
{
    int _age ;
    int _orignalAge;

}
/*set 方法*/
- (void)setAge:(int)newAge;
- (void)orignalAge ;
/*get 方法*/
- (int)age ;
@end
@implementation Student
/*set 方法的实现*/
- (void)setAge:(int)newAge
{
    _orignalAge = newAge;

    if (newAge <=0 || newAge >= 100)
    {
        newAge = 1 ;
    }
    _age = newAge ;

}
- (void)orignalAge
{
    NSLog(@"The orignal age of Input is %d",_orignalAge);
}
//get方法的实现
- (int)age
{
    return _age ;
}

@end
int main()
{
    Student *stu = [Student new];
    [stu setAge:-10];
    NSLog(@"The age of student is %d",[stu age]);
    [stu orignalAge];
    return 0 ;

}

set 命名规范:

  1. 方法名必须以set开头
  2. set后面紧跟成员变量名,采用驼峰书写规则
  3. 返回值为void
  4. 接受传递参数,至少有一个。并且参数值属性必须和成员变量参数属性一支
  5. 形参的名称不能和成员变量名重名

get的命名规范:

  1. 须有返回值,并且返回值类型和成员变量名一致。如上例中的 - (int)age .
  2. 方法名和成员变量名一致
  3. 不需要接收参数

成员变量的命名规则:

  1. 以下划线’_’开头
  2. 和其他局部变量区分开来,用下划线来作为成员变量的标示符

封装的好处?

  1. 过滤不合理的值
  2. 屏蔽内部的赋值过程
  3. 让外界不必关注内部的细节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值