1.繼承的概念
2.繼承的作用
- 可以通過繼承,將所有重複的內容放在一起。
- 子類通過繼承就可以獲得超類的實例變量和方法。
3.繼承語法
@interface 自定義類名 : NSObject
- 在cocoa中,儘量從NSObject或已繼承NSObject的類繼承。
- objective-c不支持多繼承,但可通過其他特性,如分類和協議實現多繼承的功能。
- 繼承的內容包括:方法和實例變量。 一般只在對繼承的方法重載時,纔在子類對它聲明。
- 繼承之後不必再聲明超類已有的實例變量,方法。
- 繼承常用於擴展一個類
- 不能通過繼承刪除,減少方法,但可以利用重載來更改繼承的定義。
- 不能通過繼承減少方法或實例變量,只能添加。
- 分類機制允許以模塊方式向現有的類定義添加新方法,尤其適用對沒有源代碼訪問權限的類添加新定義時。
//定一個Shape類接口
@interface Shape : NSObject //類名第一個字母要大寫
{
ShapeColor fillColor;
ShapeRect bounds;
}
-(void)setFillColor:(ShapeColor)fillColor;
-(void)setBounds:(ShapeRect)bounds;
-(void)draw;
@end//Shape
//定義一個Circlr類
@interface Circle : Shape //繼承了Shape類的方法和變量,不必再聲明。
{
}
//可以把函數寫在這,但是需要重載
@end//Circle
//定義一個Rectangle類
@interface Rectangle : Shape
{
}
@end//Rectangle
- 當代碼發送消息時,objective-c 的方法調度程序將在當前類中搜索相應的方法。
- 如果調度程序無法在接受消息的對象中找到相應的方法,它就在該對象的超類中進行查找。
- NSObject 聲明瞭一個名爲isa的實例變量,該變量保存一個指向對象的類的指針。
- 每個方法都有一個名爲self的隱藏參數,指向繼承鏈中第一個類的第一個實例變量。
- 編譯器使用基地址加偏移 查找實例變量的位置,對象的基地址指向第一個實例變量的首個字節在內存中的位置。
- isa對應類,self對應方法。
- 添加全新的方法。
- 修改方法。
- 方法調度程序將使用重寫的方法,而忽略超類的方法。重寫的方法 優先級大於超類的原方法。
- 理解oop中繼承的概念。
- 場我繼承的語法規則。
- 理解objective-c的方法調度機制:無繼承、有繼承。
- 理解關鍵字super的作用。
- 掌握在重寫方法中調用超類同名方法。