------- windows phone 7手機開發、.ios培訓、期待與您交流! -------
oc中的構造方法是用來初始化物件的方法,它是乙個物件方法,
例如:-init方法,它
是xcode中預設有的方法。呼叫-init方法的時候會遵循乙個順序,即是先初始化父類的成員變數(但是是先呼叫該類的-init方法)然後再一級一級的初始化子類的物件方法。為了能夠使預設情況下某個成員變數的值不為0,為我們所需要的某個值,則常常需要重寫構造方法。
重寫構造方法需要注意的是,先呼叫父類的構造方法
self = [super init],
這是固定寫法,初學者們,需要牢記,然後再進行子類的內部成員的初始化。同時,還必須注意,是否初始化父類物件成功,必須在初始化父類物件成功後再進行子類的內部成員的初始化。
例如:
#import "bird.h"
@implementation person
- (id)init
// 或者可以寫成下面這樣的形式
if (self = [super init]) // 將右邊賦值給左邊,左邊如果不等於空,則執行if語句
return self;
}@end
上面**,若呼叫乙個person類的物件,並且在不給_age賦新值的情況下,列印物件的_age的成員變數,則變數的值為10,這就說明初始化成功。
還需要注意的時,在有繼承關係的時候,子類在重寫構造方法時,要注意父類中成員變數的型別,是私有、公有、還是保護型別。
除了-init這類系統自帶的方法,某些情況下,還需要程式設計師們自己編寫一些常用的使用者自定義的初始化方法,我們把這種方法叫做自定義構造方法。自定義構造方法需要注意的有,首先,它一定是物件方法,以 - 開頭,其次返回值一般是id型別,方法名一般以initwith開頭。
例如:
person類的宣告:
- (id)initwithname:(nsstring *)name;
- (id)initwithage:(int)age;
- (id)initwithage:(int)age andname:(nsstring *)name;
person類的實現:
- (id)init
return self;
}- (id)initwithname:(nsstring *)name
return self;
}- (id)initwithage:(int)age
return self;
}- (id)initwithage:(int)age andname:(nsstring *)name
return self;
}
student類繼承person類,person類中擁有_age與*_name的成員變數,student類中擁有_no的成員變數
- (id)initwithno:(int)no
return self;
}
- (id)initwithname:(nsstring *)name andage:(int)age andno:(int)no
return self;
}
上面那樣寫的好處,可可以使父類的屬**給父類的方法去處理,子類方法處理子類的屬性。
main函式:
#import #import "person.h"
#import "student.h"
int main()
程式執行的結果為:
綜上所述,-init構造方法,可以使我們改變某個或者某些成員變數的初始值。自定義構造方法,可以更加靈活並且更加直觀可讀的實現-init方法的功能。
OC的構造方法
oc語言構造方法 用來初始化物件的方法,物件方法,以減號開頭 為了讓物件建立出來,成員變數就會有一些固定的值 重寫構造方法的注意點 先呼叫父類的構造方法 super init 再進行子類內部成員變數的初始化 構造方法的呼叫 完整的建立乙個可用的物件 person p person new new方法...
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...