OC--———协议protocol的基本使用
2017-05-09 17:46
330 查看
1.协议:protocol
作用:1.专门用来声明一堆方法(不能声明属性,也不能实现方法,只能有用来方法的声明)
2.如果某个类遵守了这个协议,就相当于拥有了这个协议红的所有的方法声明,而不用自己定义
2. 协议申明:@protocol 协议名称<NSObject>
方法的声明;
@end
3、 在协议中只能声明方法,协议的作用也是专门用来写方法声明的
4.类遵守协议
协议就是写方法声明的,就是有用来被准守的,
如果想要让一个类,拥有协议中的定义的所有的方法声明,那么就让这个类遵守这个协议,类只要遵守一个协议,那么这个类就拥有这些协议中的所有的方法的声明了
@interface 类名:父类<协议名称>
@end
:表示继承
<>表示遵守的协议
当一个类,遵守了一个协议,那么就相当于这个类拥有了协议中定义的所有的方法的声明,这个类只有拥有了这个协议的方法声明而已,没有实现,所以----这个类,就应该实现协议中的方法。
如果累不实现协议中的方法,其实也不会报错,但是会有警告,但是当创建对象,来调用这个没有实现的协议的方法的时候,就会报错(因为在类中没有写实现)
5.类是单继承,但是协议可以多遵守
一个类只能有一个父类(单根性,传递性)
但是一个类可以同时遵守多个协议,当这个类遵守多个协议之后,就相当于这个类拥有了所有协议中定义的方法的声明,那么这个类就可以实现所有协
4000
议中的方法
6.协议可以从另外一个协议继承,并且可以实现多继承,
@protocol A协议名 <B协议名>
代表A协议继承B协议,A协议中既有自己的方法声明,也有B协议中的方法申明
-----------另外一篇也是有关协议的 链接黑洞
创建协议,只写方法
#import <Foundation/Foundation.h>
@protocol MyProtocol <NSObject>
-(void)run;
-(void)sleeep;
@end
创健Dog类中写方法实现
#import "Dog.h"
@implementation Dog
//准守了这些协议相当于写过了方法的声明
-(void)run
{
NSLog(@"老司机带带我我");
}
-(void)sleeep
{
NSLog(@"妹子我想跟你困觉");
}
-(void)eat
{
NSLog(@"好吃好吃");
}
@end
在main函数中创建以及调用
#import <Foundation/Foundation.h>
#import "MyProtocol.h"
#import "Dog.h"
int main(int argc,constchar
* argv[]) {
Dog *dahuang = [Dog new];
[dahuang run];
[dahuang sleeep];
[dahuang eat];
return0;
}
创建协议:
作用:1.专门用来声明一堆方法(不能声明属性,也不能实现方法,只能有用来方法的声明)
2.如果某个类遵守了这个协议,就相当于拥有了这个协议红的所有的方法声明,而不用自己定义
2. 协议申明:@protocol 协议名称<NSObject>
方法的声明;
@end
3、 在协议中只能声明方法,协议的作用也是专门用来写方法声明的
4.类遵守协议
协议就是写方法声明的,就是有用来被准守的,
如果想要让一个类,拥有协议中的定义的所有的方法声明,那么就让这个类遵守这个协议,类只要遵守一个协议,那么这个类就拥有这些协议中的所有的方法的声明了
@interface 类名:父类<协议名称>
@end
:表示继承
<>表示遵守的协议
当一个类,遵守了一个协议,那么就相当于这个类拥有了协议中定义的所有的方法的声明,这个类只有拥有了这个协议的方法声明而已,没有实现,所以----这个类,就应该实现协议中的方法。
如果累不实现协议中的方法,其实也不会报错,但是会有警告,但是当创建对象,来调用这个没有实现的协议的方法的时候,就会报错(因为在类中没有写实现)
5.类是单继承,但是协议可以多遵守
一个类只能有一个父类(单根性,传递性)
但是一个类可以同时遵守多个协议,当这个类遵守多个协议之后,就相当于这个类拥有了所有协议中定义的方法的声明,那么这个类就可以实现所有协
4000
议中的方法
6.协议可以从另外一个协议继承,并且可以实现多继承,
@protocol A协议名 <B协议名>
代表A协议继承B协议,A协议中既有自己的方法声明,也有B协议中的方法申明
-----------另外一篇也是有关协议的 链接黑洞
创建协议,只写方法
#import <Foundation/Foundation.h>
@protocol MyProtocol <NSObject>
-(void)run;
-(void)sleeep;
@end
创健Dog类中写方法实现
#import "Dog.h"
@implementation Dog
//准守了这些协议相当于写过了方法的声明
-(void)run
{
NSLog(@"老司机带带我我");
}
-(void)sleeep
{
NSLog(@"妹子我想跟你困觉");
}
-(void)eat
{
NSLog(@"好吃好吃");
}
@end
在main函数中创建以及调用
#import <Foundation/Foundation.h>
#import "MyProtocol.h"
#import "Dog.h"
int main(int argc,constchar
* argv[]) {
Dog *dahuang = [Dog new];
[dahuang run];
[dahuang sleeep];
[dahuang eat];
return0;
}
创建协议:
相关文章推荐
- 【Objective-C】OC中自定义对象的归档基本概念和使用方法(实现NSCoding协议)
- 黑马程序员——OC学习之协议protocol的使用
- 【Objective-C】OC中协议(Protocol)的基本概念和用法
- 黑马程序员---OC学习笔记之protocol概念及基本使用
- oc基础-protocol协议的使用
- ios 学习第十七天 OC语言 Protocol基本使用
- OC 协议(Protocol)的基本概念和用法
- oc 中协议 protocol 的使用
- 【Objective-C】OC中自定义对象的归档基本概念和使用方法(实现NSCoding协议)
- 【Objective-C】OC中协议(Protocol)的基本概念和用法
- 关情纸尾-----OC-protocol协议的基本知识
- oc 中协议 protocol 的使用
- MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...
- 【Objective-C】OC中KVO的基本概念和使用方法
- ARC的基本使用、ARC循环引用解决方案、block、protoco 协议
- 7、OC Protocol协议
- 【Objective-C】OC中自动释放池的基本概念和使用方法
- 【Objective-C】OC中KVO的基本概念和使用方法
- OC 类目category,延展extension,协议protocol
- 【Objective-C】OC中自动释放池的基本概念和使用方法