溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OC初步認識

發布時間:2020-06-24 22:04:07 來源:網絡 閱讀:657 作者:yjf123546 欄目:開發技術

OC初步認識

, 了解面向對象和面向過程的思想區別

1,面向過程編程(Procedureoriented Programming, POP ): 以事件為中心,關系完成該事件的詳細步驟,一步一步實現

2, 面向對象編程(Object Oriented Programming, OPP);: 以事務為中心,也就是參與事件的參與者,設計事物的功能,而完成事件只是事物的所有功能中的一個小功能

二, 類 和 對象 是什么

類: 具有相同特征和相同行為的事物的抽象,類是一個抽象概念,在生活中不具體,并且,在OC里只有一個類沒有根類,即NSObject,其他的類都有父類,根類

對象: 是類的實例,即類的具體表現,是具體的,生活中的萬物都是對象

 描述一個類: 通過特征(靜態屬性) 和行為 (動態屬性,動作,功能)

 

三,具體類的定義要使用類的功能必須先定義類

定義類的分兩部分:

1, 類的接口部分:提供外部訪問接口,相當于使用說明書

1),類的接口部分寫在.h文件里, 如定義一個名為Person的類打開”.h”文件里就有

@interface Student__1____ : NSObject

@end

定義: 

 (1),以@interface開頭@end結束,只有把類的接口定義內容寫在開始和結束之間才有效

 (2),@interface后的Student__1____是類名

 (3),類名后的":"冒號表示繼承,表示該類是有父類

 (4),:冒號后面的NSObject是父類名

2, 類的實現部分:相當于功能的實現

類的實現部分寫在.m文件中

 類的實現部分:  打開”.m”文件里就有

@implementation Student__1____

@end

 (1),以@implementation 開頭,以@end結束,實現內容必須寫在中間才有效

 (2),@implementation 后跟上Student__1____是要實現的類(需要指定要對哪一個類做實現)

 類的實現其實就是實現該類的方法

四,具體類的使用以及它與C語言不同的表達方式

我們可以舉個具體的例子更明確

寫一個學生類;名字為Student__1____

以下均以學生類為例,不再聲明

使用類

1,第一步

首先在”.h”文件里寫類的接口部分(相當于C語言中函數的聲明,這樣想可以更容易理解)

1),先在大括號內定義實例變量

 

如: {

      NSString *name;

      NSString *sex;

      NSInteger age;

   }

其中實例變量必須寫在大括號之內,而且只能寫實例變量,對應描述一個類的特征,(定義實例變量,相當于C語言中結構體中的結構體成員)

2) 定義類的接口,即方法的聲明,方法對應描述類的行為 (OC的類的接口相當于C語言中函數的聲明)

在OC里,整型用NSInteger,且在OC里有字符串的類,所以定義一個字符串的變量有專門的關鍵字即NSString,NS是OC里語言的特點代表這是OC語言,另外就輸出方法與C語言的格式化輸出函數有所不同:

在C語言里輸出用printf()函數 在OC里用NSLog(@)方法輸出;括號的@不可少 @是OC語言的標志

此外在C語言里變量類型都用()小括號括起來

在以下出現的"+" 和"-"等到在main函數里調用時再解釋

如:

(1),方法1,說自己的姓名,,性別,年齡

    - (void)sayMyself;

方法名 sayMyself

(2),方法2,說自己的愛好

   -  (void)sayMyLove;

   方法名 sayMyLove

(3),方法3,說自己的工資

   - (NSInteger)saySalary:(NSInteger)money;

 在OC里如果方法有參數,那么":"冒號也是方法名的一部分, 如果方法有多個參數,則需要加多個":"

 如:該方法名為:saySalary:

自定義初始化方法

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

 

2,第二步

在”.m”文件寫類的實現部分(相當于C語言里的函數的實現)

在OC里輸出的數據類型為字符串類型則用格式化說明符”%@”,并不是”%s”,其他的一般類型格式化說明符不變

如下;

(1),方法1,說自己的姓名,性別,年齡

 

- (void)sayMyself

{

   NSLog(@"name:%@,sex:%@,%ld",name,sex,(long)age);

 

}

(2),方法2,說自己的愛好

-(void)sayMyLove

{

NSLog(@"我喜歡敲代碼??????");

}

 

(3),方法3,說自己的工資

-(NSInteger)saySalary:(NSInteger) money

{

    return money;

}

 

 

3,第三步

OC中方法的調用采用消息發送機制即”[receiver message]”(中括號不能省略)(message)消息即方法, (receiver)消息的接收者 是類或者對象

在這里可以解釋"+" 和"-"的作用: 區分消息給類還是對象發送消息用 "+" 和 "-" ,如果方法是一個"-"號方法,是給對象發送消息,如果是"+"號方法,則是給類發送消息

 

1),方法的調用需要創建對象

創建對象分為兩步:

(1),開辟空間

    通過[Student__1____ alloc] 在堆區開辟的空間才是真正的對象,只不過對于指針變量per存儲著堆  區的首地址,通過它才能訪問對象,所有我們把指針變量stu1叫做對象,(真正的對象還是對區空間, stu1本質上是一個指針變量)

(2), 初始化(賦初值) init方法完成初始化操作"-" 號方法,對象調用

但是通常創建對象把兩步操作連起來寫

如為學生類創建對象:

Student__1____ *stu1 [[[Student__1____ alloc] init]

在這里init是系統定義的初始化方法,如果是整型,則初始化為0,若為字符串,則初始化為nil(相當于C語言里的NULL);

我們通??梢宰远x初始化

如:

1)在”.h”文件里寫接口

 

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

“id”代表泛指類型,相當于C語言里的”void *” ,對于字符串的類型說明符,必須是NSString + *;因為它是指針類型

2)在”.m”文件里寫初始化函數的實現

 

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

{

    name = aName;

    sex = aSex;

    num = aNum;

    major = aMajor;

    age = aAge;

    return  self;

}

在這里self作用是誰調用該方法,self就是誰.

在寫方法時要知道,在+(類)方法中不能使用實例變量,實例變量是依托于對象存在的,只有有了對象,實例變量才會有空間


如: 開辟空間時直接子自定義初始化

Student__1____ *stu1 = [[Student__1____ alloc]initStudentname:@"YangJunfang" sex:@"girl"num:@"541110010148" major:@"math" age:22];

言歸正傳,開辟空間后就可以調用方法了:

如下:

實現方法1,說自己的姓名,,性別,年齡

[stu1 sayMyself];

實現方法2, 說自己的愛好

 [stu1 sayMyLove];

實現方法3,說自己的工資

 NSInteger money = [stu1saySalary:10000];

輸出工資

 NSLog(@"money =%ld",money);

在這里需要定義一個整型的變量用來接收方法saySalary的返回值,因為其返回值為整型

 

     

 

 

 

 

 

 

 


向AI問一下細節
推薦閱讀:
  1. 認識JSON
  2. Nginx初步優化

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女