Protocol协议

2020-03-19  本文已影响0人  橙子遇到八哥

概念:类似C++的接口,如果要实现对应的协议就要对协议的接口进行实现
@required:要求必须实现
@optional:可以选择性实现

1. 声明

// 声明一个协议
@protocol StudentProtocol <NSObject>
@required
-(void)readbook;
-(void)doHomework;
@end

// 声明一个类实现协议
@interface Person : NSObject<StudentProtocol>
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *sex;
-(void)eat;
-(void)walk;

//override
-(void)readbook;
//override
-(void)doHomework;
@end

2. 定义

@implementation Person
-(void)eat{
    NSLog(@"Person Eat!");
}

-(void)walk{
    NSLog(@"Person Walk!");
}

-(void)readbook{
    NSLog(@"Person readbook!");
}

-(void)doHomework{
    NSLog(@"Person doHomework!");
}
@end

3. 使用


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *p = [[Person alloc]init];
        [p readbook];
        [p eat];
        [p walk];
        [p doHomework];
    }
    return 0;
}

4. 扩展

上一篇 下一篇

猜你喜欢

热点阅读