【协议protocol之间的继承 Objective-C语言】

一、协议可以从另外一个协议继承,并且可以多继承

1.协议可以继承另外1个协议,A协议可以继承B协议,那么A协议中不仅有自己的方法的声明,还有B协议中的方法的声明

如果有1个类遵守了A协议,那么这个类就拥有了A协议和B协议中的所有的方法的声明

2.例如,我有一个SportProtocol,里面有一个爬山的方法,- (void)paShan;

#import <Foundation/Foundation.h>

@protocol SportProtocol < NSObject >

- (void)paShan;

@end

还有一个PlayProtocol,里面有一个玩儿LOL的方法,- (void)playLOL;

#import <Foundation/Foundation.h>

@protocol PlayProtocol < NSObject >

- (void)playLOL;

@end

二、 协议与协议之间,可以相互继承

1.协议继承的语法

@protocol 协议名称 < 父协议名称>

@end

2.例如,SportProtocol从Play Protocol的协议继承,则在SportProtocol.h文件中

#import <Foundation/Foundation.h>

#import “PlayProtocol.h”

@protocol SportProtocol < PlayProtocol>

- (void)paShan;

@end

这个时候,表示SPortProtocol运动协议从PlayProtocol玩儿的协议继承

3.那么这个继承效果是什么效果呢,

代表这个SportProtocol运动协议不仅有自己的方法声明,还有PlayProtocol的方法声明

效果:

子协议当中不仅有自己的方法的声明,还有父协议中的所有的方法的声明

这时候,运动协议SportProtocol里面有几个方法,两个,一个是运动协议自己的paShan,爬山的方法,另一个是它的父协议playLOL,玩儿LOL的方法

那我现在来一个类啊,例如Person类

我让这个Person类去遵守运动协议SportProtocol

#import <Foundation/Foundation.h>

#import “SportProtocol.h”

@interface Person:NSObject < SportProtocol >

//code;

@end

这时候,Person类里面有哪些方法的声明啊,

第一个是那个爬山的方法paShan,还有一个是玩儿LOL的方法,playLOL,

如果1个类遵守了某个协议,那么这个类,就拥有了这个协议和这个协议的父协议中的所有的方法的声明

这就是协议与协议之间的继承关系

三、介绍NSObject的两个身份

1.在Foundation框架当中,有1个类,叫NSObject,它是所有Objective-C类的基类

2.在Foundation框架当中,有1个协议,叫做NSObject

类的名称,可以和协议的名称一致

NSObject协议被NSObject类遵守,所以,NSObject协议中的所有的方法,全部的Objective-C类都拥有了

这时候,所有的Objective-C类,都遵守了NSObject协议了

所以,NSObject协议叫做基协议

3.写协议的规范

要求所有的协议都必须直接的、或者间接的从NSObject基协议继承

猜你喜欢

转载自blog.csdn.net/madoca/article/details/127032180