【协议protocol之间的继承 Objective-C语言】
移动开发
2022-10-03 21:40:52
阅读次数: 0
一、协议可以从另外一个协议继承,并且可以多继承
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