代码改变世界

封装 继承 组合

2015-12-10 21:37  AB小博客  阅读(129)  评论(0编辑  收藏  举报

  用空类别可以定义私有方法  main不能访问私有和受保护的 继承可以访问受保护的

#import <Foundation/Foundation.h>

@interface Demo : NSObject
{
@private
    int privareVar; //私有的
    int i,j;
@public             //公共的
    int publicVar;
@protected          //受保护的
    int protectedVar;
}
-(void)publicVarmm1;
@end
#import "Demo.h"
//实现私有的方法
//1.空类别
@interface Demo()
-(void)privateVarmm;//此方法是私有的

@end
@implementation Demo
-(void)publicVarmm1{            //公有的方法
    NSLog(@"publicVarmm1..");
}
@end
//
//  main.m
//  封装 继承
//
//  Created by MAC on 15/12/10.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Demo.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Demo *d = [[Demo alloc]init];
        [d publicVarmm1];//可以访问公有的 不可以访问私有的
      //  d->protectedVar 不可以访问受保护变量的 但继承可以
      
    }
    return 0;
}
#import <Foundation/Foundation.h>
#import "Demo.h"
@interface subDemo :  Demo  //继承Demo
-(void)test;
    


@end
#import "subDemo.h"

@implementation subDemo
-(void)test{
    [self publicVarmm1];
    self->protectedVar;//可以访问受保护的
}
@end

   组合

#import <Foundation/Foundation.h>
#import "Demo.h"
@interface awdaw : NSObject
{
    Demo *mmm;    //组合 awdaw中有Demo
}
@end