繼承:
1.單向繼承,一個類只能有一個父類,一個父類可以有多個子類.
2.單向繼承,基類(根類)是OSObject
3.子類可以繼承父類的屬性和方法
當父類的方法不滿足子類的需求時,子類可以重寫父類的方法,重寫父類的方法,在子類中不需要再次聲明.
1.完全重寫
2.部分重寫 使用super
建立繼承關系之後,子類可以繼承父類的:
1.實例變量,@public@protected修飾情況之下
2.公開的方法
一個方法如果在.h中聲明了,那麼這個方法就是公開的方法,如果沒有聲明,則是私有的.
OC中沒有絕對私有的方法.
子類調用方法的過程:
先在本類中尋找方法,如果找到就直接調用,如果沒有找到就在其父類中尋找,如果在父類中也沒有找到,就繼續其次向上尋找(父類的父類),直到找到為止.
如果找不到就拋出異常,引起crash.
對象對對象可以賦值,對象就是指針.
自定義初始化方法不需要在.h文件中聲明.因為是重寫了該方法.
遍歷構造器一定是一個類方法
返回值類型(id,instancetype)
自定義初始化方法:初始化+賦值.
便利構造器:開辟空間+初始化+賦值.
自定義初始化方法:
-(id)initWithColor:(NSString *)color
price:(NSString *)price{
if (self=[super init]) {
_price = price;
_color = color;
}
return self;
}
便利構造器:
+(id)appleWithColor:(NSString *)color
price:(NSString *)price{
Apple *apple=[[Apple alloc]initWithColor:color price:price];
return apple;
}