OC語言 構造方法

2021-06-27 19:18:46 字數 1960 閱讀 6485

-一、構造方法

1.什麼是oc構造方法?

oc構造方法是用來初始化物件時呼叫的方法,是個物件方法,以「-」號開頭。

2.如果你先建立乙個person類,讓建立後的person類新建立的物件預設的年齡為20歲,該如何處理?

重寫構造方法,在重寫的構造方法中對person的成員變數進行賦值。

二、物件初始化分析

person *p = [person new];

上述語句建立了乙個物件,完整的建立乙個可用的物件時分兩步:

1.分配儲存空間,返回分配好記憶體的物件;

2.對該物件進行初始化;

所以[person new] == [[person alloc] init];

解釋:

1.person類呼叫alloc方法,分配記憶體儲存空間,返回p物件;

2.p物件呼叫-init方法,對物件p進行初始化,返回p物件,其中p物件中的成員變數預設初始化值為0。

三、重寫init方法

如果想在物件建立的時候就對物件進行一些賦值,則我們需要重寫init方法。

init方法重寫示例(給person類的_age成員變數初始值設為20):

- (id)init

return self; //返回成員變數本身

}

問題:為什麼一定要寫[super init]?

解釋:person類繼承了nsobject類,子類建立成功後我們知道一定會繼承父類的一些成員變數和方法,所以如果想建立子類物件,首先要對父類進行初始化,因為父類中一些變數需要初始化,所以需要呼叫super的init方法,[super init]返回的是當前物件。

四、重寫構造方法的注意點:

1.先呼叫父類的構造方法([super init]),例如:nsobject->person->student;

2.再進行子類內部成員變數的初始化.

五、自定義構造方法:

問題:如果我想讓建立的person類初始化後都有預設年齡,但是不同的人年齡不同,該如何重寫構造方法?

解釋:這樣就需要傳遞引數,將年齡引數傳給init方法,所以,我們經常會自定義構造方法。

自定義構造方法示例:

- (id)initwithage:(int)age

return self;

}person *p = [[person alloc] initwithage:30];//建立乙個初始化年齡為30的person類物件

六、自定義構造方法的規範:

1.一定是物件方法,一定以「-」號開頭;

2.返回值一般為id型別(這樣方法可以被子類呼叫)

3.方法名一般以init/initwith開頭,例如initwithname,initwithage;

自定義構造方法練習(person類/student類):

person類:

- (id)initwithage:(int)age

return self;

}student類(繼承person類):

- (id)initwithage:(int)age andname:(nsstring *)name

return self;

}//該初始化方法中遵循父類的屬**給父類去處理,子類的方法中只處理子類自己的屬性,這樣分工明確且簡潔

OC語言構造方法

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

OC語言構造方法

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

OC語言構造方法

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