OC學習 重寫構造方法和description方法

2021-07-02 16:15:44 字數 1731 閱讀 3299

構造方法的定義:

用來初始化物件的方法,是個物件方法,「-」開頭。

重寫-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運算子一起使用在建立物件的語句中。類可以有多個建構函式,可根據其引數個數的不同或引數型別的不同來區分它們,即建構函式的過載。重寫 當乙個子類繼承乙個父類,而子類中的方法與父類中的方法的名稱,引數個數 型別...