objective-c中不支持多重继承,其替代方案为Protocal(协议),下面给出一个基本实例:
@protocol MyProtocal <NSObject> //协议本身也可以嵌套,如protocal1<protocal2>
//在OC 2.0后协议增加了required和optional两个修饰符标示是否必须要实现这个接口
//未实现要求的接口,在xcode下回提示warning
@required -(void) printId:(int)id; //@optional -(void) printName:(NSString*) name; @end
#import <Foundation/Foundation.h> #import "MyProtocal.h" @interface ClassA : NSObject<MyProtocal>{ //遵循这个协议,此处可以遵循多个,如<protocal1,protocal2....> int _id; NSString *_name; } @property int _id; @property NSString *name; -(void) printId:(int)id; @end
#import <Foundation/Foundation.h> #import "ClassA.h" int main(int argc, const char * argv[]) { @autoreleasepool { ClassA *tmp = [[ClassA alloc]init]; if([tmp conformsToProtocol:@protocol(MyProtocal)]== YES){ //判断某个实例是否遵循这个协议 NSLog(@"conforms MyProtocal"); [tmp printId:1]; } } return 0; }
原文:http://www.cnblogs.com/Fredric-2013/p/4297024.html