Objective-C學習筆記_類和對象

來源:互聯網
上載者:User

標籤:objective-c

  • 一 Objective-C概述
  • 二 物件導向編程OOP Object Oriented Programming
  • 三 類和對象
    • OC中類的定義
      • 介面部分
      • 實現部分
      • 類和檔案
      • 建立對象
      • 使對象
  • 四 執行個體變數操作

一 Objective-C概述

Cocoa和Objective-C是蘋果公司Mac OS X作業系統的核心。1980年初,Brad Cox發明了Objective-C,意將流行的、可移植的C語言和Smalltalk語言結合在一起;1985年,Steve Jobs成立NeXT公司,NeXT選擇Unix作為其作業系統,建立了NeXTSTEP(使用Objectiv-C開發的一款強大的使用者介面工具包);1988年,NeXT公司開始使用Objective-C開發;1996年蘋果公司收購了NeXT之後,NeXTSTEP被重新命名為Cocoa,並得到了Macintosh編程人員的廣泛認可,即1996年Objective-C成為了蘋果主要程式設計語言。

Objective-C簡稱OC,擴充自C語?的物件導向程式設計語言。是OS X和iOS作業系統的主要編程語?。

二 物件導向編程OOP (Object Oriented Programming)
面向過程 物件導向
特點 分析解決問題的步驟,實現函數,依次調用函數 分析某問題需要參與的對象,根據功能定義類,使?用對象的功能完成程式
側重點 實現功能 對象的設計
語言舉例 C語言 Objective-C, C++, Java等

因此,物件導向編程具有良好的可擴充性、可重用性。這一點在日後開發過程中可見一斑。

三 類和對象

類和對象是物件導向的核心。步驟:定義類,建立對象,使用對象。

類:具有相同特徵和行為的事物的抽象。

對象是類的執行個體。

類是對象的類型。

OC中類的定義

定義類包含兩部分:介面部分(.h檔案)和實現部分(.m檔案)。

  1. 接?部分(.h檔案):聲明類的特徵和行為。
  2. 實現部分(.m檔案):內部的具體實現。
介面部分

接?部分標誌:@interface … @end

作用:聲明類的執行個體變數和方法,即特徵和行為。

包含內容:類名、父類名、執行個體變數、方法等。

#import <Foundation/Foundation.h>/* 類的聲明:  * 聲明: 執行個體變數 和 方法 */@interface Person : NSObject /* Person 類名                              * NSObject 父類名                              *//* 聲明執行個體變數, 在{}中 */{    @public /* 執行個體變數可見度修飾符 */    /* 姓名 *///    char name[20];    NSString *_name; /* OC中字串使用NSString                       * * 說明是指標                      * 執行個體變數必須使用_開頭                      */    NSString *_sex;    /* 年齡 *///    int _age;    NSInteger _age; /* NSInteger 相當於C中的int類型 */}/* 聲明方法 *//* 聲明說話打招呼的方法 */- (void)sayHi; /* 方法的聲明類似於函數的聲明                * - 號不能省略, 叫做-號方法.                */- (void)info;@end
實現部分

實現部分標誌:@implementation … @end

作?:實現?法,即實作類別的?為。

#import "Person.h"@implementation Person/* 方法的實現  * 方法聲明之後必須實現, 否則編譯時間出現警告 */- (void)sayHi{    printf("Hello!\n"); // C語言的輸出    NSLog(@"Hello!"); /* @相當於OC的一個標誌                        * 後面不用加‘\n‘, 自動換行                       */}- (void)info{    NSLog(@"姓名: %@, 性別: %@, 年齡: %ld", _name, _sex, _age); // %@ 相當於指代對象}@end
類和檔案

類:@interface … @end @implementation … @end

?件:.h稱為介面檔案或標頭檔,.m稱為實現檔案。預設設定如下:

  1. 使用類名命名檔案。
  2. .h檔案管理類的介面部分;.m檔案管理類的實現部分

檔案和類本質沒有關係。

建立對象

類是模板,對象是具體表現,任何對象都要佔用記憶體空間。

建立對象分兩步:分配記憶體空間和初始化。

分配記憶體空間:根據類中聲明的執行個體變數為對象分配記憶體,將所有執行個體變數置為預設值0,並返回首地址。

初始化:為對象的執行個體變數設定初始值。

分配記憶體空間:Person * p = [Person alloc];

初始化:p = [p init];

通常這兩部操作需要連寫:Person * p = [[Person alloc] init];

+ (id)alloc; +表示這個方法屬於類,只能類執行。id傳回值類型,表示任意類型的對象,即建立好的對象。

- (id)init; -表示這個方法屬於對象,只能對象執行。id傳回值類型,表示初始化完成的對象。

使?對象

指標儲存物件的首地址,代指對象。OC中使用指標代指對象,進行操作。

Person *p = [Person alloc];先執行“=”右側

  1. [Person alloc]傳回值是對象的?地址,即對象。
  2. p是跟對象同類型的指標變數,儲存物件首地址,代指對象。
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) {    @autoreleasepool {/* 1.定義類 * 2.建立對象 * 3.使用對象 *//* 定義類, 建立一個類名的.h 和 .m檔案 * .h 聲明: 執行個體變數 和 方法 * .m 實現部分: 實現方法 *//* 建立對象 * 1. 匯入.h 標頭檔 * 2. 開闢記憶體空間 * 3. 初始化 */        /* Person : 類名         * personOne : 對象名         * alloc : 方法名, 作用開闢空間. + 方法, 只有類能使用, 傳回值類型id, 物件類型.         */        Person *personOne = [Person alloc];        personOne = [personOne init]; /* 初始化, init - 方法, 對象使用的方法, 傳回值類型id, 物件類型 */        /* 分配記憶體空間並初始化 */        Person *personTwo = [[Person alloc] init];        /* 使用對象(方法) */        NSLog(@"%d, %s", __LINE__, __func__); // 行數 調用模組        [personOne sayHi];        [personOne info]; }    return 0;}
四 執行個體變數操作

執行個體變數在初始化只做少量設定,後期還需要進?設定。

執行個體變數區分可見度,共三種public、protected、private,預設可見度為protected。

@public:執行個體變數存取修飾詞號(公有);public修飾的執行個體變數,可以直接使用“—>”訪問

#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        /* 賦值操作 */        Person *personOne = [[Person alloc] init];        [personOne info];        /* 姓名賦值 */        personOne->_name = @"Zhang San";        personOne->_sex = @"man";        personOne->_age = 20;        /* 取值操作 */        /* 輸出姓名 */        NSLog(@"姓名: %@", personOne->_name);        NSLog(@"性別: %@", personOne->_sex);        NSLog(@"年齡: %ld", personOne->_age);        [personOne info];    }    return 0;}

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

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.