文章结束给大家来个程序员笑话:[M]
协议(protocal)与Java的interface(接口)和C++的纯虚类同相,协议只担任方法的列表,不担任方法的实现,的目是让别的类来实现,协议只有接口部份,没有m文件,关键字是protocol,协议可以承继别的协议,协议中不能义定别的成员变量。
Graphics.h file
#import <Foundation/Foundation.h>
@protocol Graphics
-(void) onDraw;
@end
Ellipse 类的实现
#import <Foundation/Foundation.h>
#import "Graphics.h"
@interface Ellipse:NSObject <Graphics>
@end
#import "Ellipse.h"
@implementation Ellipse
-(void)onDraw
{
NSLog(@"draw ellipse");
}
@end
Triangle类的实现
#import <Foundation/Foundation.h>
#import "Graphics.h"
@interface Triangle : NSObject <Graphics>
@end
#import "Triangle.h"
@implementation Triangle
-(void)onDraw
{
NSLog(@"draw triangle");
}
@end
main函数的实现
int main(int argc, const char * argv[])
{
@autoreleasepool {
id test;
test=[[Ellipse alloc] init];
[test onDraw];
[test release];
test=[[Triangle alloc]init];
[test onDraw];
[test release];
}
return 0;
}
the resutl is:
draw ellipse
draw triangle
objective C的承继是单一承继,但是可以实现多个协议,用,割分
文章结束给大家分享下程序员的一些笑话语录:
看新闻说中国输入法全球第一!领先了又如何?西方文字根本不需要输入法。一点可比性都没有。