03 黑馬程式設計師 封裝 set方法與get方法

2021-06-22 06:59:25 字數 1560 閱讀 9769

@public的成員可以被隨意賦值,應該使用set方法和get方法來管理成員的訪問(類似機場的安檢、水龍頭過濾,過濾掉不合理的東西),

比如殭屍的生命值不能為負數。

取值方法和設值方法通常稱為訪問器(

accessor

)方法

1)  

作用:用來設定成員變數,可以在方法裡面過濾掉一些不合理的值

2)  

命名規範:

方法都是以

set開頭,而且後面跟上成員變數名,成員變數名的首字母必須大寫

形參名稱不要跟成員變數同名

1)  

作用:返回物件內部的成員變數

2)  

命名規範:

get方法的名稱一般就跟成員變數同名

成員變數都以下劃線_開頭

作用:

可以跟get方法的名稱區分開

可以跟其他區域性變數區分開,一看到下劃線開頭的變數,肯定是成員變數

#import // 宣告

@inte***ce car: nsobject

/*set方法*/

- (void)setwheels:(int)wheels;

/*get方法*/

- (int)wheels;

@end

@implementation car

//set方法的實現

- (void)setwheels:(int)wheels

_wheels = wheels;

}//get方法的實現

- (int)wheels

@end

過濾不合理的值

遮蔽內部的賦值過程

讓外界不必關注內部的細節

儘管編譯器的容錯能力比較強,但是寫**必須規範

#import @inte***ce person : nsobject

@end

@implementation person

@end

int main()

a.以上**,沒有test方法的宣告和實現,編譯和鏈結都不會報錯,能生成可執行檔案。在編譯時只會有乙個警告:warning:'person' may not respond to 'test' [p test];

但是,一旦執行程式就會出錯,程式會閃退,報的錯誤(經典錯誤)如下:

-[person test]: unrecognized selector sent to instance0x7fd2ea4097c0

給person物件傳送了乙個不能識別的訊息

b.如果以上**,有test方法的宣告,沒有test方法的實現,編譯和鏈結也不會報錯,也能生成可執行檔案,在編譯是也有乙個警告。

但是,一旦執行程式就會出錯,程式會閃退,報經典錯誤

c.如果以上**,沒有test方法的宣告,有test方法的實現,編譯和鏈結也都不會報錯,並且沒有警告,並且可以執行。

總結:

oc是在執行過程中才會檢測物件有沒有實現相應方法

黑馬程式設計師 Set

asp.net android ios開發 net培訓 期待與您交流!1 set 元素無序,唯一 2 hashset 底層資料結構是雜湊表,依賴兩個方法 hashcode 和equals 3 treeset 底層資料結構是二叉樹,根據返回值是否為0,判斷元素是否重複。排序有兩種方案 元素具備比較性 ...

黑馬程式設計師 OC封裝

物件導向的三大特性 封裝 繼承和多型 在開發過程中,考慮到安全性要求,我們一般不在成員變數名前面使用 public protected等關鍵字修飾,而是使用set方法來為物件提供成員變數的值。set方法的內部也可以對一些不合理的賦值進行篩選過濾。set方法的作用 為外界提供乙個設定成員變數值的方法 ...

黑馬程式設計師 java基礎 封裝

asp.net unity開發 net培訓 期待與您交流!封裝表示吧資料項和方法隱藏在物件內部,在類定義中用private關鍵字來實現封裝。封裝有什麼好處?用private把類的細節與外界隔離起來,從而實現資料項和方法的隱藏,而要訪問這些資料項和方法唯一的途徑就是通過類本身,類才有資格呼叫它所擁有的...