protocol

一 protocol的概念
协议是多个类共享的一个方法列表。协议中列出的方法没有相应的实现,计划由其他人来实现(比如你)。协议提供了一种方式,用指定的名称定义一组多少有点相关的方法。协议声明的方法可以选择实现 和必须实现。
二 protocol的作用
1.解耦
2.增加程序的可扩展性
三 protocol的格式
@interface 类名 : 父类 <协议名称1, 协议名称2,…>
@end
协议可以指定方法的实现方式如:
@required:方法必须要实现
@optional:方法可以选择实现
四 protocol 的基本使用方法
1)一个类遵守了协议,它就拥有了协议中所有方法的声明
2)父类遵守了协议,那么子类也会遵守
3)OC中没有多继续,但可以遵守多个协议
4)协议也可以遵守另一个协议
五 protocol 实验用例
例1:综合的例子


//  main.m实现代码

#import <Foundation/Foundation.h>
#import "Person.h"
#import "children.h"
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        Person *per = [Person new];
        [per run]; //必须实现的协议方法
        children *child = [children new];
        [child eat];   //可选实现的协议方法 nsprotocol协议
        [child food];  //可选实现的协议方法 food协议
    }
    return 0;
}
/*************************************************/

下面是food协议


//  food.h 协议**
#import <Foundation/Foundation.h>

@protocol food <NSObject>//food协议遵守NSObject协议
@optional
-(void)food; //一个可选择实现的方法
@end

****下面是nsprotocol协议****
/*************************************************/
**nsprotocol.h 协议**
#import <Foundation/Foundation.h>
#import "food.h"
@protocol NSprotocol <food>//遵守food协议,同时也遵守nsobject协议
-(void)run;  //默认协议方法是必须要实现的
@optional //选择实现协议
-(void) eat;
@end

下面是person类

#import "Person.h"
@interface children : Person
@end
/*************************************************/

*//  Person.m  person类**
#import "Person.h"

@implementation Person
-(void)run
{
    NSLog(@"这个人正在跑");
}
//-(void) eat; //没有实现这个方法,因为他是可选的
//-(void)food; //它里面包含这个方法,只不过它是可选的
@end

下面是继承person类的children类

#import "children.h"

@implementation children
-(void)eat  //children类 也包含协议的声明,所以这里可以实现它
{
    NSLog(@"小孩正在吃饭");
}
-(void)food
{
    NSLog(@"小孩的食物是牛奶");
}
@end

结构图如下:
这里写图片描述

运行结果如下:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俯仰一世_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值