OC繼承的特點:
@1. 繼承是單向的,不能相互繼承。
@2. 繼承具有傳遞性:A繼承於B,B繼承於C,A具有B和C的特徵和行爲
@3.
OC中只允許單繼承
@4. 繼承的內容:所有實例變量和方法。
@5. OC中所有的方法(消息),默認都是公有的。
修飾符:
private: 私有成員,不能被外部函數訪問(使用),也不能被子類繼承;
protected:保護成員,不能被外部函數訪問,可以被子類繼承;
public: 公有成員,可以被外部函數訪問,也可以被子類繼承。
注: 默認的權限是 protected。
繼承的優缺點:
優點:
@1. 提高代碼的複用。
@2. 擴展原有的類。
注意:NSString、NSArray、NSDictionary都是不能夠繼承的。
缺點:
@1. 破壞了封裝性,基類向子類暴露了實現細節 ,白盒重用。
@2. 當父類的實現改變時可能要相應的對子類做出改變
@3. 不能在運行時改變由父類繼承來的實現
因此:組合比繼承具有更大的靈活性和更穩定的結構,一般情況下應該優先考慮組合.
OC的方法都是虛方法:
1)父類的指針可以指向子類的對象
Person *p = [[Student alloc] init];
此時的p指向子類對象;調用方法時,不看指針,看對象,對象的地址指向什麼對象,就調用什麼方法,稱爲虛方法。
2)虛方法的好處:可以描述不同事物被相同事件觸發,會產生不同的響應。