封装就是定义类 定义属性 定义方法
属性封装了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继承就是代码优化公共部分交给父类
#import "Person.h" @interface Worker : Person @end #import "Person.h" @interface King : Person @end多态就是允许方法重名 参数或返回值可以是父类型传入或返回
#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