天天看點

Object C學習筆記10-靜态方法和靜态屬性

  在.NET中我們靜态使用的關鍵字static有着舉足輕重的作用,static 方法可以不用執行個體化類執行個體就可以直接調用,static 屬性也是如此。在Object C中也存在static關鍵字,今天的學習過程使用到了這個關鍵字,在這裡記錄一下static的使用。

  1. 靜态屬性

  Object C中靜态屬性的定義和.NET中的有點不一樣,先看看如下代碼:

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

錯誤的static屬性定義

  以上代碼定義 static int totalCount; 這樣在編譯器中編譯會報錯,這樣的代碼編寫對于編譯器是不認可的。正确的定義放入如下:

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

正确的static屬性定義-interface

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

正确的static屬性定義-implementation

  static 屬性應該定義在implementation中,而且寫在implementation之外或者方法之中。以上代碼是将static 屬性寫在implementation之外。

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

測試代碼和結果

  從以上代碼可以看出,調用hello方法直接使用類名Person而非Person的執行個體,而且每次調用之後count都會+1.

  2. static屬性在方法中

  修改代碼如下,将static屬性改到方法中。

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

static 屬性在方法中

  使用如上方式和1中的效果一樣,static屬性是屬于類全局的,看看測試代碼就知道效果如何:

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

  效果和前面的是一樣的。下面再看看在執行個體方法中定義static 屬性看看效果如下,修改代碼如下:

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

在執行個體方法中定義static屬性

  測試執行個體方法中的靜态屬性測試方法如下:

Object C學習筆記10-靜态方法和靜态屬性
Object C學習筆記10-靜态方法和靜态屬性

測試代碼

  從以上測試代碼可以看出,static 屬性定義到執行個體方法中同樣适用,在調用的循環過程中for不斷執行個體化新的執行個體,name屬性在發生變化,而count保留上次運作的結果,這也就是static的作用。

  3. 靜态方法

  在.NET中定義靜态方法也需要适用static 關鍵字,但是在Object C并非如此。在之前我們定義方法的時候都是如下格式:

  - (傳回值類型) 方法名: 參數,... 

  适用靜态方法 就是将 "-" 改為 "+" 即可。

  +(void) hello; 在interface中定義如上方法簽名,而在implementation中實作這個方法。

  靜态方法的時候在上面的例子中已經提到過了,可詳細參考!

繼續閱讀