06-01、面向?qū)ο蟮娜筇匦裕悍庋b的基本概念

屏幕快照 2017-09-18 13.26.27.png
屏幕快照 2017-09-18 14.48.02.png
屏幕快照 2017-09-18 14.49.01.png
main.m
#import <Foundation/Foundation.h>
#import "Gun.h"

int main(int argc, const char * argv[]) {

// 1.創(chuàng)建一把槍
Gun *gun = [Gun new];
// 2.設(shè)置槍的子彈數(shù)量
//    gun->_bullet = 100;
// 引發(fā)這個問題的原因: 因為成員變量是public, 給成員變量賦值的時, 賦值的值不受我們的約束
//    gun->_bullet = -100;

[gun addBullet:100];

// 3.射擊
[gun shoot];

// 4.查看子彈的剩余數(shù)據(jù)(獲取成員變量的值)
//    NSLog(@"bullet = %i", gun->_bullet);
NSLog(@"BULLET = %i", [gun getBullet]);


return 0;
}
Gun.h
#import <Foundation/Foundation.h>

@interface Gun : NSObject
{
//    @public
int _bullet; // 子彈
// 雖然成員變量不是public之后外界不能直接訪問了, 但是還是可以在本類的對象方法中直接訪問
}

/**
 *  射擊方法
 */
- (void)shoot;


// 提供一個方法用于設(shè)置成員變量的值
- (void)addBullet:(int)count;

// 提供一個方法用于返回成員變量的值
- (int)getBullet;
@end
Gun.m
#import "Gun.h"

@implementation Gun

- (void)shoot
{
if (_bullet > 0) {
    
    _bullet--;
    NSLog(@"打了一槍 , 還剩%i顆子彈", _bullet);
}else{
    NSLog(@"沒有子彈了");
}
}

// addBullet就是對成員變量的封裝
- (void)addBullet:(int)count // -100
{
/*
 封裝: 屏蔽內(nèi)部實現(xiàn)的細(xì)節(jié), 僅僅對外提供共有的方法/接口
 好處: 保證數(shù)據(jù)的安全性
       將變化隔離
 規(guī)范: 一般情況下不會對外直接暴露成員變量, 都會提供一些共有的方法進(jìn)行賦值
       成員變量都需要封裝起來
 */
// 對傳入的數(shù)據(jù)進(jìn)行過濾
if (count < 0) {
    count = 0;
}
_bullet = count;
}

- (int)getBullet
{
return _bullet;
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容