-一、構造方法
1.什麼是oc構造方法?oc構造方法是用來初始化物件時呼叫的方法,是個物件方法,以「-」號開頭。
2.如果你先建立乙個person類,讓建立後的person類新建立的物件預設的年齡為20歲,該如何處理?二、物件初始化分析重寫構造方法,在重寫的構造方法中對person的成員變數進行賦值。
person *p = [person new];所以[person new] == [[person alloc] init];上述語句建立了乙個物件,完整的建立乙個可用的物件時分兩步:
1.分配儲存空間,返回分配好記憶體的物件;
2.對該物件進行初始化;
解釋:
1.person類呼叫alloc方法,分配記憶體儲存空間,返回p物件;三、重寫init方法2.p物件呼叫-init方法,對物件p進行初始化,返回p物件,其中p物件中的成員變數預設初始化值為0。
如果想在物件建立的時候就對物件進行一些賦值,則我們需要重寫init方法。init方法重寫示例(給person類的_age成員變數初始值設為20):
問題:為什麼一定要寫[super init]?- (id)init
return self; //返回成員變數本身
}
解釋: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.一定是物件方法,一定以「-」號開頭;自定義構造方法練習(person類/student類):2.返回值一般為id型別(這樣方法可以被子類呼叫)
3.方法名一般以init/initwith開頭,例如initwithname,initwithage;
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 方法拆開如下 ...