06-02、面向?qū)ο蟮娜筇匦裕悍庋b引出getter和setter方法

setter方法:

作用: 設(shè)置成員變量的值
格式:

  1. setter方法一定是對(duì)象方法
  2. 一定沒(méi)有返回值
  3. 一定以set開頭, 并且set后面跟上需要設(shè)置的成員變量的名稱去掉下劃線, 并且首字母大寫
  4. 一定有參數(shù), 參數(shù)類型一定和需要設(shè)置的成員變量的類型一致, 并且參數(shù)名稱就是成員變量的名稱去掉下劃線
    例子: - (void)setMin:(int)min
    {
    // setter方法還有一個(gè)好處: 監(jiān)聽屬性的變化
    _min = min;
    // 每次重新設(shè)置最小值, 那么就重新計(jì)算平均值
    _average = (_min + _max) / 2;
    }
getter方法:

作用: 獲取成員變量的值
格式:

  1. getter方法一定是對(duì)象方法
    2.一定有返回值, 而且返回值一定和獲取的成員變量的類型一致
    3.方法名稱就是獲取的成員變量的名稱去掉下劃線
  2. 一定沒(méi)有參數(shù)
只讀只寫私有屬性:

如果某一個(gè)屬性只提供了getter方法, 沒(méi)有提供setter方法, 我們稱這個(gè)屬性為只讀屬性
如果某一個(gè)屬性只提供了setter方法, 沒(méi)有提供getter方法, 我們稱這個(gè)屬性為只寫屬性
如果某一個(gè)屬性同時(shí)提供了setter方法和getter方法, 我們稱這個(gè)屬性為可讀可寫的屬性
如果某一個(gè)屬性沒(méi)有提供了getter和setter, 我們稱這個(gè)屬性為私有屬性

main.m
#import <Foundation/Foundation.h>
#import "Gun.h"

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

Gun *gun = [Gun new];

[gun setSize:5];
NSLog(@"size = %i", [gun size]);
return 0;
}
Gun.h
#import <Foundation/Foundation.h>

@interface Gun : NSObject
{
int _bullet; // 子彈
/*
 由于將來(lái)我們經(jīng)常需要定義一些方法來(lái)操作成員變量,而每個(gè)方法都必須有一個(gè)有意義的名稱,而想名字非常難,所以就有了getter-setter方法
 getter-setter方法格式和寫法都是固定的,所以只要有g(shù)etter-setter方法我們就不用煞費(fèi)心思的去想方法名稱了,解決我們起名字難問(wèn)題
 并且getter-setter方法還是程序員之間的一種規(guī)范,以后別人只要想給屬性賦值立刻就會(huì)想到getter-setter方法,這樣降低了程序員之間的溝通成本
 
 */
int _size; //尺寸
NSString *_model;//型號(hào)
int _color; //顏色
double _weight; // 重量
}

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


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

// 提供一個(gè)方法用于返回成員變量的值
- (int)getBullet;


- (void)setSize:(int)size;


- (int)size;
@end
Gun.m
#import "Gun.h"

@implementation Gun

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

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

- (int)getBullet
{
return _bullet;
}
- (void)setSize:(int)size;
{

 //成員變量以下劃線開頭的好處,就是可以區(qū)分局部變量和成員變量
 
_size = size;
}

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

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 看候鳥終究是要?dú)w巢,人終將是會(huì)衰老,一切都顯得理所應(yīng)當(dāng),現(xiàn)實(shí)的這么無(wú)可救藥。 總被一種不安籠罩,有些事不敢想,不能...
    LZL秀閱讀 354評(píng)論 0 0
  • 終于能好好說(shuō)話了。
    隨緣57閱讀 288評(píng)論 1 2
  • 作者:溫利武 班級(jí):1402019 學(xué)號(hào):14020199041 【嵌牛導(dǎo)讀】:深度學(xué)習(xí)的潛在優(yōu)勢(shì)就在于可以...
    wlw_1fdf閱讀 2,997評(píng)論 0 3

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