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...