Objective-C物件導向

來源:互聯網
上載者:User

標籤:

轉載、引用請註明來源!

Objective-C的類

一、文法簡介1、類1)、.h檔案:類的聲明檔案,用於聲明執行個體變數和方法。類的聲明使用關鍵字@interface和@end。【.h中的方法只是聲明,不實現,也就是只說明了方法名、傳回型別、接收的參數及類型,並不會編寫方法的內部代碼】!2)、.m檔案:類的實現檔案,用於實現.h中聲明的方法。類的實現檔案使用關鍵字@implementation和@end。 2、執行個體變數執行個體變數的聲明和C語言定義變數的方法是一樣的,使用“變數類型 變數名”格式的文法。【id 類型變數表示任意物件類型】 3、執行個體變數的範圍:1)、@public (公開的)在有對象的前提下,任何地方都可以直接存取。2)、@protected (受保護的,預設就是@protected)只能在當前類和子類的對象方法中訪問。3)、@private (私人的)只能在 當前類的對象和對象方法中才能直接存取。 4、方法1)、方法的聲明和實現,都必須以 + 會 - 號開頭+ 表示類方法-  表示對象方法2)、在 .h 中聲明的所有方法範圍都是 public 。 二、建立 OC 類 1、右擊專案檔,選擇 New File 2、選擇Cocoa的 Cocoa Class

 3、輸入類名(首字母通常大寫)和選擇父類、語言

這樣就建立了一個類名為People的類,父類是NSObject。 4、建立完成後,項目多了 2 個檔案
 * People.h 是類的聲明檔案, People.m 是類的實現檔案。* 預設情況下, 這兩個檔案名稱與類名一致* 編譯器只會編譯 .m 檔案,不會編譯 .h  檔案。

三、類代碼解析 1、People.h — 類的聲明檔案

#import

@interface People : NSObject

@end

1)、 OC 中使用 @interface 來聲明一個類,@interface 後面緊跟類名 People 。2)、 類名 People 後面的冒號 : 表示繼承,People : NSObject 表示 People 類繼承自 NSObject 。3)、@end 表示類聲明的結束。4)、 #import  , 是因為 NSObject  被聲明在 Foundation.h 中。  2、People.m — 類的實現檔案

#import "People.h"

 @implementation People

@end

1)、因為 People 這個類聲明在 People.h 檔案中 ,所以要 #import "People.h" 。

2)、OC中使用關鍵字 @implementation 來實現一個類,@implementation 後的 People 表示要實現的類。

3)、 @end表示類的實現結束 。

 四、新增成員變數通常情況下,我們把執行個體變數定義在類的標頭檔中,即類的聲明檔案中。1、給 People 添加執行個體變數

#import

 @interface People : NSObject

{

    int _age;       //年齡

    float _weight;  //體重

}

 

@end

1)、添加了一個 int 類型的成員變數 _age 和 float 類型的成員變數 _weight,預設情況下成員變數的範圍是@protected [受保護的],即可以在 People 類內部和子類訪問。

2)、執行個體變數必須寫在花括弧 {  } 中。

五、添加方法

前面定義了兩個執行個體變數 _age 和 _weight ,它們的範圍是 @protected ,外界不能直接存取它們。為保證資料的封裝性,我們可以提供 _age 和 _weight 的 get 和 set 方法,讓外界間接訪問 _age 和 _weight 。下面以 _age 的 get  和 set 方法為例。

1、在 People.h 中聲明方法

#import

@interface People : NSObject

{

    int _age;       //年齡

    float _weight;  //體重

}

- (void)setAge:(int) age;       //age 的 set 方法聲明

- (int)age;                //age 的 set 方法聲明

 

@end

1)、- (void)setAge:(int) age;  是 set 方法的聲明,- 表示類方法,(void)表示傳回型別,setAge:是方法名,【注意冒號也是方法名的一部分,一個冒號對應一個參數】,(int) 是參數類型,age 是參數名。

2)、- (int)age;    是 get 方法的聲明,該方法沒有參數。

 

2、在 People.m 中實現方法

#import "People.h"

@implementation People

//set方法的實現

- (void)setAge:(int) age{

    _age = age;

}

//get方法的實現

- (int)age{

    return _age;

}

@end

1)、set 方法將參數 age 賦值給執行個體變數 _age。2)、 get 方法 返回執行個體變數age。 六、建立對象 在使用一個對象之前,首先要調用類的建構函式產生對象。OC通過向類發送訊息來建立一個對象,發送alloc訊息即可建立對象:     文法:[類名   alloc]; alloc 執行後即可完成對象所需的記憶體配置,但還沒進行初始化。初始化對象的方法叫初始化方法。文法:[[類名  alloc] init];      *OC中的方法可以嵌條使用。 這樣就可以產生一個對象了。(也可以使用 new 直接產生一個對象) *建立一個 People 對象

#import

#import "People.h"

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

    @autoreleasepool {

        People *p1 = [[People alloc] init]; 

    }

    return 0;

}

1)、因為要使用People 類,所以要包含 #import "People.h" 。

2)、OC中的方法調用使用 [  ] ,括弧左側是調用者(類 或 對象),右側是方法。

3)、分配記憶體。+(id)alloc; 方法是類方法,其傳回值是 id 類型。

4)、初始化。init方法是對象方法。

 

*銷毀對象:在還沒有ARC(自動釋放)機制的年代,每建立一個對象,就要手動釋放一次

即:[p1  release];

 

Objective-C物件導向

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.