我學習Object C中的收穫總結(三)(四)

2021-07-06 03:23:59 字數 1436 閱讀 3879

(三)具體的來講.h與.m檔案

在.h裡的@inte***ce與@end之間在乙個大括號裡建立類的例項變數

nsstring *_name;

nsstring *_gender;

nsstring *_hobby;

int      _age;// 基礎型別不用加*,oc裡的自定義型別都需要加*,與指標類似

.h檔案裡方法的宣告:

上次說到了減號開頭的是例項方法,加號開頭的是類方法

- (void)go;

+ (void)eat;

函式名前面的小括號裡是函式的返回值型別,後面也可以跟若干個引數,不過引數一定要有冒號

例:引數名前也要註明引數型別

.m檔案裡方法的實現:

- (void)go

+ (void)eat

在main檔案裡呼叫:

person *person = [[person alloc] init];

[person go];// 例項方法

[person eat];// 類方法

(四)例項變數的三種可見度:

@public:例項變數可以在外部或內部使用

@protected:例項變數是能在本類或它的子類中使用

@privaty:只能在本類中使用

例項變數的賦值與取值的方法(set與get):

- (void)setname:(nsstring *)name; // set後面緊跟你的例項物件名字(首字母大寫,省略_),還要有乙個傳遞的引數

- (nsstring *)getname;// get方法命名規則也是一樣,不過沒有引數

- (void)setname:(nsstring *)name// setter設定器

- (nsstring *)getname// getter訪問器

每一對setter與getter對應乙個例項變數

main:

person *person = [[person alloc] init];

[person setname:@"李四"];

[person getname];

nslog(@"%@", person->_name);

自定義初始化方法:

- (instancetype)initwithname:(nsstring *)name;

- (instancetype)initwithname:(nsstring *)name

main:

child *child = [[child alloc] init];

[child initwithname:@"李子"];

類的組合使用:

要引用某個類就得引入標頭檔案,而這個類如果被別的類引入了並且在引用的類裡建立了例項物件,被引用的類就要在自己的@inte***ce前加上乙個@class後面緊跟引用它的類名。避免了類的迴圈匯入問題,否則編譯器報錯。

我學習Object C中的收穫總結(五)(六)

五 類的繼承能夠大大簡化 公共的方法與例項變數寫在父類裡,子類只寫自己特有的。並且oc裡沒有多繼承,只能單繼承。多級繼承之後,執行方法時是現在本類中找,沒有就在父類中找,逐級向上。子類重寫父類的方法了又想呼叫父類的這個方法,用super呼叫。例 super 父類方法 遍歷構造器 它是乙個加號方法,封...

我的最大收穫

我的最大收穫 左直拳功夫大師李小龍在他自傳性質的文章中曾經說,這輩子最大的收穫不是在功夫上,也不是在電影或電視上,而是娶到了一位好太太。她人很賢惠,處處遷就丈夫,每天李小龍下班回家,甚至可以幫他脫鞋子。李小龍是我的偶像。對他說的這一點,我也感同身受。真幸運。我跟老婆結婚已經快7年了。生活上,我被照顧...

我的最大收穫

我的最大收穫 左直拳功夫大師李小龍在他自傳性質的文章中曾經說,這輩子最大的收穫不是在功夫上,也不是在電影或電視上,而是娶到了一位好太太。她人很賢惠,處處遷就丈夫,每天李小龍下班回家,甚至可以幫他脫鞋子。李小龍是我的偶像。對他說的這一點,我也感同身受。真幸運。我跟老婆結婚已經快7年了。生活上,我被照顧...