面向對象的三大特點封裝、繼承、多態
封裝:隱藏內部實現,穩定外部接口.
封裝就是定義類 定義屬性 定義方法
屬性封裝了setter get方法
@property(nonatomic,retain)NSString *name,*sex;
類封裝了實例變量和方法
.h文件
#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
.m文件
#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
繼承:子類可以直接複用父類中的成員.子類繼承父類所有方法的聲明和實現非私有的實例變量以及協議
繼承是要在.h中聲明一下繼承具有單根性和傳遞性繼承就是代碼優化公共部分交給父類
#import "Person.h"
@interface Worker : Person//子類:父類
@end
#import "Person.h"
@interface King : Person
@end
OC中繼承:單根性(一個子類只能有一個超類)
傳遞性(A->B->C A->C)
多態:不同對象對同一消息的不同響應.子類可以重寫父類的方法
多態就是允許方法重名 參數或返回值可以是父類型傳入或返回
Worker *worker = [[Worker alloc] init];
worker.name =@"工人";
[worker work];
King *king = [[King alloc]init];
king.name = @"國王";
[king work];