协议实现objective C 协议的实现

文章结束给大家来个程序员笑话:[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的承继是单一承继,但是可以实现多个协议,用,割分

文章结束给大家分享下程序员的一些笑话语录: 看新闻说中国输入法全球第一!领先了又如何?西方文字根本不需要输入法。一点可比性都没有。

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3065416.html