用空类别可以定义私有方法 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
原文:http://www.cnblogs.com/WJR12/p/5037395.html