面對對象的三個基本特征:
封裝 encapsulation
繼承 inheritance
多態 polymorphism
1.繼承
含義:復用父類的成員。類型抽象:將子類當作父類來使用(is-a)。
OC中只支持單繼承,而且必需要有一個父類。如果沒有指定的父類,可以指定NSObject(所有類的基類)。
繼承的成員:
實例變量
shape->_data = 20; //子類調用父類的實例變量用"->"
屬性
實例方法
類方法
技巧:默認實例變量只能在實現類內中訪問,但如果外部要訪問的話。可在接口頭文件中將實例變量指定為@public。
@interface Shape : NSObject {
@public int _data;
}
2.多態 (運行時多態)
override 重寫父類的方法,重寫就是跟父類方法名參數名相同的方法。
OC本身不支持方法的重載。
super 代表基類,子類中調用基類的方法。
self 代表當前對象,具有多態性。
//父類的引用指向子類的對象
Shape *rect = [[Rectangle alloc] init];
void process(Shape* shape){
shape.no++;
[shape draw]; //多態調用
}
子類自動繼承父類的初始化器,也可重寫父類的初始化器,但必須手動調用父類的初始化器。
子類繼承父類的析構器,也可重寫父類的析構器方法,子類的析構器執行完,會調用父類的析構器(后置調用)。析構器是具有多態性的。