第03天OC语言(01):封装基本概念
2017-07-20 本文已影响17人
liyuhong
- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
什么是封装,封装有什么好处
学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)
适合所有人,不需要懂的什么
注:(小白直接上手)
一、本章笔记
为什么要封装
成员变量是public 给成员变量赋值的时,赋值的值 不受我们约束(控制)
封装 : 屏蔽内部实现的细节,仅仅对外提供 共有的方法/接口
好处 : 保证 数据的安全性
将变化隔离
规范 : 一般情况下 不会对外直接暴露成员变量,都会提供一些 共有的方法进行赋值
成员变量都需要封装起来
二、code
main.m
>>>main.m
#pragma mark 01-封装基本概念
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Gun.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
// 1.创建一把枪
Gun *gp = [Gun new];
// 2.设置枪的子弹数量
// gp->_bullet = 100;
#warning 引发这个问题的原因, 因为成员变量是public 给成员变量赋值的时,赋值的值 不受我们约束(控制)
// gp->_bullet = -100;
[gp addBullet:100];
// 3.射击
[gp shoot];
// 4.查看子弹的剩余数量(获取成员变量的值)
// NSLog(@"bullet = %i",gp->_bullet);
NSLog(@"bullet = %i",[gp getBullet]);
return 0;
}
Gun
>>>.h
#import <Foundation/Foundation.h>
@interface Gun : NSObject
{
// @public
int _bullet; // 子弹
// 虽然成员变量 不是public之后 外界不能直接访问了,但是还是可以在本类的对象方法中直接访问
}
// 射击方法
- (void)shoot;
// 提供一个方法用于设置成员变量的值
- (void)addBullet:(int)count;
// 提供一个方法 用于 返回成员变量的值
- (int)getBullet;
@end
>>>.m
#import "Gun.h"
@implementation Gun
- (void)shoot
{
if(_bullet > 0)
{
_bullet--;
NSLog(@"打了一枪,还剩%i子弹",_bullet);
}
else
{
NSLog(@"没有子弹");
}
}
// addBullet 就是对成员变量的封装
/*
封装 : 屏蔽内部实现的细节,仅仅对外提供 共有的方法/接口
好处 : 保证 数据的安全性
将变化隔离
规范 : 一般情况下 不会对外直接暴露成员变量,都会提供一些 共有的方法进行赋值
成员变量都需要封装起来
*/
- (void)addBullet:(int)count
{
// 对传入的数据进行过滤
if (count < 0) {
count = 0;
}
_bullet = count;
}
- (int)getBullet
{
return _bullet;
}
@end