iOS開發之OC語法基礎(二) 繼承和例項化

2021-06-27 03:55:44 字數 4041 閱讀 8847

1、掌握物件導向程式設計特性——繼承

2、掌握oc中的自定義初始化方法

3、掌握oc中的便利構造器的寫法

1、oc中,乙個類可以繼承另外乙個類

2、被繼承的類稱為父類(super class)或超類

3、繼承的類稱為子類(subclass)

4、子類可以直接使用父類的部分特徵和行為

注意:oc中只允許每個類有切只有乙個父類,並且oc種的基類時nsobject!!!

5、實現繼承很簡單:在封裝類的介面部分使用符號「:」

@inte***ce childclass: superclass
例如:

@inte***ce person: nsobject

6、下面建立乙個學生類:

student.h

#import "person.h"

@inte***ce student : person

- (void)study;

@end

student繼承於person類,除了包含自身特徵和行為外,還包含父類的特徵和行為!!

1、子類能直接繼承父類的方法

2、還可以重寫父類的方法(子類自己實現行為)

3、子類重寫了父類的方法,呼叫過程中執行子類的方法

4、繼承具有傳遞性:如果a是b的子類,b是c的子類,那麼a也具有c的特性和行為

1、在oc語言裡,方法分兩大類:類(+)方法和例項(-)方法:

類方法必須用類(名)來呼叫,例項方法必須用物件來呼叫

方法是類的行為,在介面檔案中宣告,在實現檔案中實現。

例如:setter、getter都是oc中的方法

(1)子類呼叫父類的方法,新建乙個student繼承person

student.h

#import "person.h"

@inte***ce student : person

@end

student.m
#import "student.h"

@implementation student

@end

main.m
#import #import "person.h"

#import "student.h"

int main(int argc, const char * argv)

(2)重寫父類的方法,重寫父類的方法不需要再次宣告

student.h

#import "person.h"

@inte***ce student : person

@end

student.m
#import "student.h"

@implementation student

- (void)sayhi

@end

main.m

#import #import "person.h"

#import "student.h"

int main(int argc, const char * argv)

2、自定義初始化方法

(1)建立物件分兩步:分配空間和初始化

(2)初始化方法的作用就是為物件賦初始值

(3)初始化方法通常以init開頭

例如:- (id)initwithname:(nsstring *)name;

注意:乙個類可以包含多個初始化方法!!

3、self、super

self和super是oc語言中的關鍵字:

super:將訊息傳送給父類物件

self:將訊息傳送給本物件

self始終代表接收訊息的物件

4、指定初始化方法

乙個類有且只有乙個指定初始化方法,在眾多的初始化方法中,無論你呼叫哪個初始化方法,指定初始化方法都會執行,指定初始化方法會跟父類初始化方法有一定聯絡。

5、便利構造器

便利構造器是一種快速建立物件的方式。它本質上是把初始化方法做了一次封裝,方便外界使用。

便利構造器是乙個類方法。(以+開頭)

+(uibutton *)buttonwithtype(uibutton type)buttontype;
6、事例:為student類新增自定義初始化方法、為student類新增指定初始化方法、為student類新增便利構造器方法

student.h

#import "person.h"

@inte***ce student : person

//指定初始化方法,通常情況下是能夠賦初始值最多的方法

- (id)initwithname:(nsstring *)_name

age:(nsinteger)_age

gender:(nsstring *)_gender

number:(nsinteger)_number

score:(cgfloat)_score;

//自定義初始化方法

- (id)initwithname:(nsstring *)_name;

- (id)initwithnumber:(nsinteger)_number;

//便利構造器

+ (id)studentwithname:(nsstring *)_name;

+ (id)studentwithnumber:(nsinteger)_number;

+ (id)studentwithname:(nsstring *)_name

age:(nsinteger)_age

gender:(nsstring *)_gender

number:(nsinteger)_number

score:(cgfloat)_score;

//自定義初始化方法

//指定初始化方法

//便利構造器

@end

student.m
#import "student.h"

@implementation student

//指定初始化方法,通常情況下是能夠賦初始值最多的方法

- (id)initwithname:(nsstring *)_name

age:(nsinteger)_age

gender:(nsstring *)_gender

number:(nsinteger)_number

score:(cgfloat)_score

return self;

}//自定義初始化方法

- (id)initwithname:(nsstring *)_name

- (id)initwithnumber:(nsinteger)_number

//便利構造器

+ (id)studentwithname:(nsstring *)_name

+ (id)studentwithnumber:(nsinteger)_number

+ (id)studentwithname:(nsstring *)_name

age:(nsinteger)_age

gender:(nsstring *)_gender

number:(nsinteger)_number

score:(cgfloat)_score

- (void)sayhi

@end

mian.m
#import #import "person.h"

#import "student.h"

int main(int argc, const char * argv)

1、oc只允許單繼承,繼承具有傳遞性。

2、子類從父類繼承了部分特徵和行為。

3、子類可以重寫父類方法,定製自己個性化的行為。

4、oc中的方法:類方法和例項方法。

5、oc中的例項化方法:自定義初始化方法和便利構造器。

iOS基礎(oc) 繼承

知之部落格 期待與您交流!一 成員訪問型別 private 私有成員,不能被外部函式訪問 使用 也不能被子類繼承 protected 保護成員,不能被外部函式訪問,可以被子類繼承 public 公有成員,可以被外部函式訪問,也可以被子類繼承。oc中,所有的方法 訊息 都是公有的。二 重寫 繼承的另一...

OC基礎語法之封裝繼承多型

封裝 隱藏內部實現,穩定外部介面.封裝就是定義類 定義屬性 定義方法 set方法 提供乙個方法給外界設定成員變數的值,沒有返回值,一定要接收乙個引數,引數型別跟成員變數型別一樣,形參的名稱不能跟成員變數名一樣。get方法 返回物件內部的成員變數,肯定有返回值,返回值與成員變數型別一致,方法名跟成員變...

iOS開發之OC語法基礎(七) 集合

collection 集合 能容納多個事物的容器就是集合 在ios中的集合容器有陣列 字典 集合 1 陣列 nsarray,不可變陣列,可以存放多個物件,例項化的時候以nil表示結束,通過下標索引物件 nsarray無法新增 刪除 修改元素 import int main int argc,cons...