一.繼承:
子類可以直接復用父類中的成員.子類繼承父類所有方法的聲明和實現 非私有的實例變量以及協議 繼承時要在.h中聲明一下 繼承具有單根性和傳遞性
繼承的根類:大多都繼承自 NSObject 類,所以在定義一個類時,要繼承NSObject 類。
繼承就是代碼優化公共部分交給父類
例如:
(Person是父類Worker 和Worker都繼承了Person成為子類)(注:oc中的所有類都繼承與NSObject)
#import "Person.h"
@interface Worker : Person
@end
#import "Person.h"
@interface Worker : Person
@end
二.繼承的特點:
- 使用繼承可以實現代碼的復用,減少代碼冗余;
- Objective-C中一個類可以繼承另一個類;
- 被繼承的類稱為父類或超類(基類);
- 繼承的類稱為子類或派生類;(孩子類);
- 子類可以直接擁有父類中所有允許子類繼承的屬性和方法;
- (繼承關系是可以傳遞的)子類除了可以調用父類的方法,也可以調用父類的父類的方法,也就是說繼承可以確保某個父類型之下的所有類都會有父類型所持有的全部方法;
- 子類可以有自己的成員變、量屬性和方法;
- (單一繼承性)Objective-C不支持多重繼承。
三.繼承的作用:
繼承的標識為英文的“:”冒號(),使用繼承可以定義一個具有父類所有功能(成員和方法)的新類,它繼承了父類的功能。
四.繼承中的方法重寫:
- 編寫子類時,某些方法(從父類繼承過來)需要自己的代碼實現;
- 子類允許重寫父類的方法,在調用子類對象的重寫方法時,就會調用重寫后的方法;
- 父類中被子類所重寫的方法則在調用子類方法時被忽略;
五.super關鍵字:
- 如果在子類中 需要調用父類的功能,可以借助super關鍵字;
- 子類中使用super發送消息時,實際上是告訴子類調用父類的方法;
- 如果父類沒有定義該方法,則繼續在繼承鏈上查找,直到找到為止;
- 如果查到NSobject為止仍然未找到,則報錯;
- 重寫方法時經常會使用super關鍵字調用父類的方法。
六.為何要使用繼承?
將所有重復的內容合并在一起,可以使代碼有效率,簡潔,才意味著是一個成功的架構。否則,修改代碼時需要修改多處,就很容易出錯。
七.繼承使用注意:
- 父類要寫在子類前面
- OC中不允許子類中擁有和父類中相同名稱的成員變量
- OC中子類可以重寫父類方法,當調用子類時優先調用子類方法
- 繼承造成類與類之間耦合性太強,若父類不見,則子類不能使用
- 父類類型的變量不能用來調用子類的方法
八.繼承中方法調用的流程:
首先到子類去找,如果有該方法,就調用子類方法,如果沒有,就再到父類去找,如果父類還沒有,再到父類的父類去找,如果最后還沒有找到,程序會崩潰。