Objective-C - protocol学习笔记

Objective-C - protocol学习笔记

有一些方法它们不属于任何的类,或者不是一个类必须具有的特性,把这些方法抽象出来构成一个集合,称为协议(protocol)

比如说定义一个类BNRPerson用于表示人,人有身高、体重、肺活量这些属性,以及能够吃饭和睡觉这些方法。但是人扮演战士的角色时,他可以为自由而战,但是为自由而战并不是人必备的方法,因此将其抽象出来称为协议。比如定义协议BNRPeopleRights来表示人类权益的集合,并将为自由而战设定为其方法,便定义了一个协议。协议就是一组方法的集合。

一个类若实现协议中定义的方法,则称为遵从(conform)该协议,比如BNRPerson实现了BNRPeopleRights中的为自由而战的方法,则称为遵从协议BNRPeopleRights

协议(protocol)定义

下面的代码定义了一个协议BNRPeopleRights,此协议有一个必须实现的方法fightForFreedom。意味着遵从该协议的类必须实现该方法。

协议也可以继承,比如BNRPeopleRights继承了NSObject,但是继承语法与类继承语法不同。

@protocol BNRPeopleRights <NSObject>

@required
- (void)fightForFreedom;

@optional

@end

遵从协议(protocol)

下面的类BNRPerson遵从了协议BNRPeopleRights

#import "BNRPeopleRights.h"

// 遵从协议BNRPeopleRights
@interface BNRPerson : NSObject <BNRPeopleRights>

// 使用property使得编译器自动生成访问器
// 指明属性和类型
@property (nonatomic, readwrite) float heightInMeters;
@property (nonatomic) int weightInKilos;

// 身体质量指数
- (float)bodyMassIndex;

@end

上面的例子中只遵从了一个协议,也可以遵从多个协议,如果遵从多个协议,需要在尖括号里面提供多个协议名,名称之间以,隔开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值