標籤:
封裝
#import <Foundation/Foundation.h>@interface Person : NSObject { //@public int _age;}- (void) setAge : (int) age;- (int) age;@end@implementation Person- (void) setAge : (int) age { if(age <= 0) { age = 1; } _age = age;}- (int) age { return _age;}@endint main() { Person *p = [Person new]; //p->age = 10; //NSLog(@"年齡是: %i", p->age); [p setAge : 0]; NSLog(@"年齡是: %i", [p age]); return 0;}/** 注意我的命名規範 **///封裝的好處: 代碼的安全性高
繼承和組合
#import <Foundation/Foundation.h>@interface AClass : NSObject { int _age; int _height;}@end@implementation AClass@end/** 繼承 **/@interface BClass : AClass{}@end@implementation BClass@end/** 組合 **/@interface CClass : NSObject { AClass *_aClass;}@end@implementation CClass@endint main() { return 0;}//子類方法和屬性的訪問過程: 如果子類沒有 就去訪問父類的//子類和父類不能有相同的成員變數//子類和父類可以有相同的方法(方法的重寫)/** 繼承的好處 **///不改變原來模型的基礎上 拓充方法//建立類與類之間的聯絡//抽取了公用代碼/** 繼承的壞處 **///耦合性強/** super 關鍵字 **///直接調用父類中的方法 [super 方法名]//super 處在對象方法中就會調用父類的對象方法//super 處在類方法中就會調用父類的類方法//使用場合: 子類重寫父類的方法時想保留父類的一些行為
多態
#import <Foundation/Foundation.h>@interface Animal : NSObject- (void) eat;@end@implementation Animal- (void) eat { NSLog(@"Animal在吃東西");}@end@interface Dog : Animal@end@implementation Dog- (void) eat { NSLog(@"Dog在吃東西");}@endint main() { Animal *a = [Dog new]; [a eat]; return 0;}/** 多態 **///多態只存在子父類繼承關係中//子類對象賦值給父類指標/** 多態的好處 **///用父類接收參數 節省代碼/** 多態的局限性 **///父類類型的變數不能直接調用子類特有的方法(可以考慮強制轉換)/** 多態的細節 **///動態綁定: 在運行時根據對象的類型確定動態調用的方法
Objective-C 封裝 繼承 多態