OC 構造方法和分類

2022-05-27 17:51:07 字數 2338 閱讀 6679

建立乙個可用的物件:person *p=[person new];

new方法實際上是分為兩步來建立乙個物件:

1)使用+alloc方法來分配儲存空間(返回分配的物件);

2)使用-init方法來對物件進行初始化。

可以把new方法拆開如下:

1.呼叫類方法+alloc分配儲存空間,返回未經初始化的物件

person *p1=[person  alloc];

2.呼叫物件方法-init進行初始化,返回物件本身

person *p2=[p1 init];

3.以上兩個過程集成為一句:

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

說明:init方法就是構造方法,是用來初始化物件的方法,注意這是乙個物件方法,-減號開頭。預設初始化完畢後,所有成員變數的值都為0。

需求1,如果我需要讓每個物件建立出來的初始值是10,而不是1,應該怎麼辦呢?

需求2,讓學生繼承人類,要求學生物件初始化之後,年齡是10,學號是1,怎麼辦?

(1)子類擁有的成員變數包括自己的成員變數以及從父類繼承而來的成員變數,在重寫構造方法的時候應該首先對從父類繼承而來的成員變數先進行初始化。

(2)原則:先初始化父類的,再初始化子類的。

(3)重寫構造方法的目的:為了讓物件方法一建立出來,成員變數就會有一些固定的值。

(4)注意點:#1先呼叫父類的構造方法[super init]; #2再進行子類內部成員變數的初始化。

(1)一定是物件方法,以減號開頭

(2)返回值一般是id型別

(3)方法名一般以initwith開頭

person類的宣告,其中宣告了兩個接收引數的自定義構造方法

person類的實現

student繼承自person類,宣告了乙個接收三個引數的構造方法

student類的實現

測試主程式

(1)自己做自己的事情

(2)父類的方法交給父類的方法來處理,子類的方法處理子類自己獨有的屬性

概念:category  分類是oc特有的語言,依賴於類。

分類的作用:在不改變原來的類內容的基礎上,為類增加一些方法。

新增乙個分類:

在分類中新增乙個study方法:

study方法的實現:

測試程式:

(1)分類只能增加方法(包括類方法和物件方法),不能增加成員變數

(2)在分類方法的實現中可以訪問原來類中的成員變數;

(3)分類中可以重新實現原來類中的方法,但是會覆蓋掉原來的方法,導致原來的方法無法再使用(警告);

(4)方法呼叫的優先順序:分類->原來的類->父類,若包含有多個分類,則最後參與編譯的分類優先;

(5)在很多的情況下,往往是給系統自帶的類新增分類,如nsobject和nsstring,因為有的時候,系統類可能並不能滿足我們的要求。

(6)在大規模的應用中,通常把相應的功能寫成乙個分類,可以有無限個分類,對原有類進行擴充,一般分模組寫,乙個模組乙個分類。

(1)給nsstring類增加乙個類方法,計算某個字串物件中阿拉伯數字的個數;

(2)給nsstring類增加乙個物件方法,計算當前字串物件中阿拉伯數字的個數;

分類中方法的宣告

分類中方法的實現

測試程式:

OC語言 構造方法和分類的使用

一.構造方法 1呼叫 alloc分配儲存空間 person p person alloc 2初始化 init person p1 p init 可以集成為一句person p2 person alloc init 3如果有一些特殊需要,例如建立出來的物件是乙個特定值,可以重寫init方法,進行初始化...

oc構造方法

一 構造方法的呼叫 完整的建立乙個可用的物件 person p person new new方法的內部會分別呼叫兩個方法來完成 2件事情,1 使用 alloc 方法來分配儲存空間 返回分配的物件 2 使用 init 方法來對物件進行初始化。可以把new 方法拆開如下 1.呼叫類方法 alloc 分配...

oc構造方法

主題 exam self 是訊息傳送者,不要簡單理解為物件 self super init if self return self 下圖為isa截圖 在物件處打一斷點可到如下內容,isa是指標,指向類方法 void setage等 在init構造實現賦值和輸出 需要有賦值方法和輸出方法 例如 set...