OC基础第三讲
繼承、初始化方法
繼承
1.基本概念
繼承的上層—父類, 繼承的下層—子類, 子類繼承父類全部的特征和行為。
根類(NSObject): 沒有父類的類
繼承是單向的,不能相互繼承,且OC中只允許單繼承
繼承具有傳遞性
2.Super
super是編譯器指令,并非對象,而self是指針(即對象)
作用:調用從父類繼承的實例方法
子類可以重寫父類的方法(這個方法無需在子類中重復聲明),當子類重寫父類的方法后,子類會調用自己重寫后的方法,如果要調用父類的方法,則需要給super發消息[super 方法名]。
?
初始化方法
?
創建對象步驟:分配空間 -> 初始化(為新開辟的空間賦值)
?完整的初始化方法(3步):
?子類中定義了除父類中公共實例變量之外的實例變量。在自身的初始化方法中,先向super發送init消息,初始化公共實例變量,初始化成功后,在初始化自身特有變量,從而完成全部實例變量的初始化。
//? 聲明自定義初始化方法( 3個參數)(指定初始化方法)
-(id)initWithNo:(int)no withName:(NSString *)name withAge:(int)age
{
? ? //? 優先調用從父類繼承過來的初始化方法
? ? self = [super initWithName:name withAge:0];
? ? //? 判斷初始化是否成功,如果初始化成功,在初始化自身持有的實例變量
? ? if (self) {
? ? ? ? _no = no;
? ? }
? ? //? 返回對象
? ? return self;
}
初始化方法特征:’-’方法(實例方法);返回值是(id)或者(instancetype);init開頭;可以帶0~多個參數。內部實現:先執行super的始化方法,再初始化自身變量,最后返回對象 return self.
指定初始化方法:一個類含有多個初始化方法,無論執行哪個初始化方法,總有一個初始化方法被調用,這個方法就是初始化方法。一般選參數最全的初始化方法作為指定初始化方法
//? 使用實例方法創建學生類對象
Student *pStu = [[Student alloc] initWithName:@"小王" withAge:18 withNo:28
便利構造器
便利構造器是’+’方法(類方法),方法名以類名開頭,返回本類型的實例
內部實例:封裝了alloc(開辟空間)和初始化方法(init)
//? 實現方法
+(id)personWithName:(NSString *)name withAge:(int)age
{
? ? Person *p = [[Person alloc] initWithName:name withAge:age];
? ? return p;
}
//? 使用便利構造器創建對象
Person *p = [Person personWithName:@"小王" withAge:66];
?
posted on 2014-04-25 21:24 和果子 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/liuyu521/p/3690175.html
總結
- 上一篇: 暂时赢了:英国法庭驳回针对 Meta 的
- 下一篇: 亚马逊员工这么惨?裁员之后又被减薪 还要