封裝:隱藏內(nèi)部實現(xiàn)膳汪,穩(wěn)定外部接口.
封裝就是定義類 定義屬性 定義方法
屬性封裝了setter get方法?
@property(nonatomic,retain)NSString *name,*sex;
類封裝了實例變量和方法
```
#import<Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *_name;
NSString *_sex;
int _age;
}
@property(nonatomic,retain)NSString *name,*sex;
@property(nonatomic,assign)int age;
- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age;
-(Person *)work;
@end
#import "Person.h"
@implementation Person
@synthesize name = _name,sex = _sex,age = _age;
- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age
{
self = [super init];
if (self) {
self.name = name;
self.sex = sex;
self.age = age;
}
return self;
}
- (Person *)work
{
NSLog(@"%@正在工作",self.name);
return 0;
}
@end
```
繼承:子類可以直接復用父類中的成員.子類繼承父類所有方法的聲明和實現(xiàn) 非私有的實例變量以及協(xié)議 繼承是要在.h中聲明一下 繼承具有單根性和傳遞性
繼承就是代碼優(yōu)化公共部分交給父類
```
#import "Person.h"
@interface Worker : Person
@end
#import "Person.h"
@interface King : Person
@end
```
多態(tài):不同對象對同一消息的不同響應.子類可以重寫父類的方法
多態(tài)就是允許方法重名 參數(shù)或返回值可以是父類型傳入或返回
```
#import "AppDelegate.h"
#import "Worker.h"
#import "Actor.h"
#import "King.h"
Worker *worker = [[Worker alloc] init];
worker.name = @"工人";
[worker work];//worker 可以換為父類型Person
King *king = [[King alloc]init];
king.name = @"國王";
[king work];//king可以換為父類型Person
```