構造方法的定義:
用來初始化物件的方法,是個物件方法,「-」開頭。
重寫-init方法:
- (id)init
return self;
}
簡寫作:
- (id)init
return self;
}
重寫構造方法的注意點:
1、先呼叫父類的構造方法(【super init】)。
2、再進行子類內部成員變數的初始化。
自定義構造方法的規範:
1、一定是物件方法,一定以「-」開頭。
2、返回值一般是id型別。
3、方法名一般以initwith開頭。
例如:
- (id)initwithname: (nsstring *)name andage: (int)age
return self;
}
不過最好寫成:
- (id)initwithname: (nsstring *)name andage: (int)age
return self;
}
(id)initwithname: andage是父類方法,盡量用父類的成員變數交由父類的方法中進行初始化。
這樣寫的好處:
1、自己做好自己的事情。
2、父類改變了變數名,子類不用改,封裝性好。
父類的成員變數交給父類處理,子類的成員變數交給子類處理。
nslog除了可以輸出基本資料型別,nslog函式還可以輸出任何oc物件。
student *stu = [[student alloc] initwithage:10];
nslog(@"%@", stu);
[stu release];
在第3行用nslog函式輸出stu物件,注意左邊的格式符%@,以後想輸出oc物件,就得用%@這個格式符。
nslog函式一旦發現用%@輸出某個oc物件時,就會呼叫這個物件的description方法(這個方法返回值是nsstring型別,是oc中的字串型別),並且將description方法返回的字串代替%@的位置進行輸出。
class c = [person class];
nslog(@"%@", c);
這裡c是類物件,第2行會呼叫類的 +description方法,拿到+description方法的返回值(nsstring *)顯示出來。預設輸出為類名。
重寫description方法
description方法的預設實現是返回類名和物件的記憶體位址,這樣的話,使用nslog輸出oc物件,意義就不是很大,因為我們並不關心物件的記憶體位址,比較關心的是物件內部的一些成變數的值。因此,會經常重寫description方法,覆蓋description方法的預設實現。
比如,重寫student的description方法,返回成員變數_age的值。
- (nsstring *)description
在第2行呼叫了nsstring這個類的靜態方法stringwithformat初始化乙個字串物件,並返回這個字串。
假如_age是10,那麼description方法返回的字串就是@"age=10"。
OC中重寫構造方法及自定義構造方法
構造方法 用來初始化物件的方法 如 person p person alloc init alloc用來分配記憶體空間 init初始化,也就是oc中的構造方法 重寫構造方法 instancetype init if self super init age 18 return self 將構造方法初始...
OC 構造方法和分類
建立乙個可用的物件 person p person new new方法實際上是分為兩步來建立乙個物件 1 使用 alloc方法來分配儲存空間 返回分配的物件 2 使用 init方法來對物件進行初始化。可以把new方法拆開如下 1.呼叫類方法 alloc分配儲存空間,返回未經初始化的物件 person...
構造方法 重寫 和 過載
構造方法 是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。類可以有多個建構函式,可根據其引數個數的不同或引數型別的不同來區分它們,即建構函式的過載。重寫 當乙個子類繼承乙個父類,而子類中的方法與父類中的方法的名稱,引數個數 型別...