oc中,繼承於nsobject的類統稱為 model 類(存字串)
oc中,只允許單繼承,無多繼承,協議是間接地實現多繼承的方式
繼承所有的例項變數和方法,子類可以重寫父類的方法
例子:student繼承於person
person.h檔案
#import @inte***ce person : nsobject
// 非重寫的初始化方法需要進行宣告
- (instancetype)initwith***:(nsstring *)***;
- (instancetype)initwithname:(nsstring *)name;
- (instancetype)initwithage:(nsinteger)age;
- (instancetype)initwithage:(nsinteger)age ***:(nsstring *)***;
- (instancetype)initwithname:(nsstring *)name ***:(nsstring *)***;
- (instancetype)initwithname:(nsstring *)name age:(nsinteger)age;
- (instancetype)initwithname:(nsstring *)name ***:(nsstring *)*** age:(nsinteger)age;
// 便利構造器
+ (instancetype)initwithname:(nsstring *)name ***:(nsstring *)*** age:(nsinteger)age;
- (void)eat;
- (void)toilet;
@end
person.m檔案
#import "person.h"
@implementation person
// 子類如果繼承父類,那麼在子類的初始化方法中(內部)必須呼叫父類的初始化方法
// 指定指派初始化方法,可以用來糾錯
// 這個初始化方法為指派初始化方法,***是必須有的
- (instancetype)initwith***:(nsstring *)***
return self;
}// 非重寫的初始化方法需要進行宣告
// 在非指派初始化方法中,自己本身呼叫指派初始化方法
// 在這些方法中 無***時,需要賦乙個預設值
- (instancetype)init
//- (instancetype)initwithname:(nsstring *)name
////
// return self;
//}- (instancetype)initwithname:(nsstring *)name
return self;
}- (instancetype)initwithage:(nsinteger)age
return self;
}- (instancetype)initwithage:(nsinteger)age ***:(nsstring *)***
return self;
}- (instancetype)initwithname:(nsstring *)name ***:(nsstring *)***
return self;
}- (instancetype)initwithname:(nsstring *)name age:(nsinteger)age
return self;
}- (instancetype)initwithname:(nsstring *)name ***:(nsstring *)*** age:(nsinteger)age
return self;
}// 便利構造器
+ (instancetype)initwithname:(nsstring *)name ***:(nsstring *)*** age:(nsinteger)age
- (void)eat
- (void)toilet
@end
student.h檔案
#import // 引入person.h檔案
#import "person.h"
@inte***ce student : person// 子類 : 父類
@end
student.m檔案
#import "student.h"
@implementation student
- (instancetype)init
// 重寫父類方法,不需要再次宣告
- (void)eat
- (void)toilet
@end
main檔案#import #import "person.h"
#import "student.h"
int main(int argc, const char * argv)
return 0;
}
列印結果:
吃五穀雜糧
self =
per =
吃五穀雜糧
self =
吃果蔬__func__ = -[student eat]
next self =
上廁所__func__ = -[student toilet]
stu =
next self =
上廁所__func__ = -[student toilet]
繼承與多型(一) 使用繼承擴充套件類
enum breed class mammal mammal int newage,int newweight age newage weight newweight mammal int getage void setage int newage int getweight void setwei...
Python繼承擴充套件內建類
繼承最有趣的應用是給內建類新增功能,在之前的contact類中,我們將聯絡人新增到所有聯絡人的列表裡,如果想通過名字來搜尋,那麼就可以在contact類新增乙個方法用於搜尋,但是這種方法實際上屬於列表本身,我們可以使用繼承來做 class contactlist list defsearch sel...
C C 類設計 擴充套件和繼承
繼承是c 程式庫用來提供擴充套件性的主要機制。有時,從乙個類實現繼承是容易的 但某些時候,從乙個類繼承確實很難實現的。類派生的困難程度取決於派生類本身與基類的設計與實現。對於乙個類而言,如果可以容易地從它派生出適當的派生類,我們就稱這個是可以繼承的,之所以說是適當的派生類,因為沒有人會這樣認為 由於...