黑马程序员——OC语言基础---封装的概念及原理

来源:互联网 发布:阿里云 dns服务器地址 编辑:程序博客网 时间:2024/05/24 06:47

                                                                           ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

封装的概念及原理

面向对象的特性之一:封装(OC最小的封装体就是函数) 

1、封装

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 

2、封装的好处: 

将变化隔离。(不管里面怎么变,使用者不需要知道) 

便于使用。(使用者只需按照一定的方法使用就可以了) 

提高重用性。(任何人都可以对已封装好的功能进行操作) 

提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性) 

3、封装的原则: 

将不需要对外提供的内容都隐藏起来。 

把属性都隐藏,提供公共方法对其访问。 

4、为什么要进行封装?

不封装的缺点: 当一个类把自己的属性暴露给外部的时候,那么该类就失去对属性的管理权

将数据隐藏起来,只能用此类的方法函数才可以访问或者设置数据,不可被外部任意存储是面向对象设计本质。降低了数据被无用的可能性!

在OC语言中,使用@interface和@implementation来处理类。

@interface就好像暴露在外面的时钟表面,像外界提供展示以及接口。

@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来。

5、封装的原理?

实例变量默认只能被当前类的对象方法访问。

#import <Foundation/Foundation.h>@interface Gun : NSObject{    @public    int _bulletCount;}-(void)shoot;-(void)setBulletCount:(int)bulletCount;@end@implementation Gun-(void)shoot{       if(_bulletCount>0){           _bulletCount--;           NSLog(@"\ntututu ... 剩余子弹:%d",_bulletCount);    }else{              NSLog(@"没有子弹");        }}-(void)setBulletCount:(int)bulletCount{    if (bulletCount>0) {                _bulletCount =  bulletCount;           }else{            _bulletCount = 0;    }}@endint main(int argc, const char * argv[]) {    @autoreleasepool {              Gun *gun= [Gun new];        gun->_bulletCount = -3;                      [gun shoot];        [gun shoot];        [gun shoot];        [gun shoot];        [gun shoot];           }    return 0;}


0 0
原创粉丝点击