A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_sDq3j8d0 中级黑马   /  2015-9-15 21:40  /  995 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

封装:隐藏内部实现,稳定外部接口.
封装就是定义类 定义属性 定义方法

属性封装了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



继承:子类可以直接复用父类中的成员.子类继承父类所有方法的声明和实现 非私有的实例变量以及协议 继承是要在.h中声明一下 继承具有单根性和传递性
继承就是代码优化公共部分交给父类
#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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马