1 #import <Foundation/Foundation.h>
2 #import "IOSProgrammer.h"
3 #import "JavaCodingMonkey.h"
4 int main(int argc, const char * argv[]) {
5 @autoreleasepool {
6 JavaCodingMonkey * javaCodingMokey = [[JavaCodingMonkey alloc] init];
7 [javaCodingMokey writeJavaCode];
8
9 IOSProgrammer * iOSProgrammer = [[IOSProgrammer alloc] init];
10 [iOSProgrammer sleep];
11 [iOSProgrammer sing];
12 [iOSProgrammer playGame];
13 [iOSProgrammer writeIOSCode];
14
15 id<IOSProgrammerProtocol> staff = iOSProgrammer;
16 [staff writeIOSCode];
17
18 id<IOSProgrammerProtocol> staff2 = javaCodingMokey;
19 [staff2 writeIOSCode];
20
21 // id 类型的指针 遵守协议后 只能调用协议中的方法
22
23
24 }
25 return 0;
26 }
1 #import <Foundation/Foundation.h>
2 // @protocol 协议的名字 <NSObject>
3 @protocol IOSProgrammerProtocol <NSObject>
4 @required // 必须要实现的方法 默认 不实现会有警告
5 - (void)writeIOSCode;
6 @optional // 可选的方法 可以实现也可以不实现
7 - (void)playTaiji;
8 @end
1 #import <Foundation/Foundation.h>
2 #import "IOSProgrammerProtocol.h"
3 @interface JavaCodingMonkey : NSObject<IOSProgrammerProtocol>
4 - (void)writeJavaCode;
5 @end
1 #import "JavaCodingMonkey.h"
2
3 @implementation JavaCodingMonkey
4 - (void)writeJavaCode {
5 NSLog(@"write Java Code");
6 }
7
8 - (void)writeIOSCode {
9 NSLog(@"write ISO code");
10 }
11 @end
1 #import <Foundation/Foundation.h>
2 #import "IOSProgrammerProtocol.h"
3
4 @interface IOSProgrammer : NSObject<IOSProgrammerProtocol>
5 - (void)sing;
6 - (void)sleep;
7 - (void)playGame;
8 @end
1 #import "IOSProgrammer.h"
2
3 @implementation IOSProgrammer
4 - (void)sing {
5 NSLog(@"唱了一首 会喷火葫芦娃");
6 }
7
8 - (void)sleep {
9 NSLog(@"好好的休息了一下");
10 }
11
12 - (void)playGame {
13 NSLog(@"玩了一局英雄联盟");
14 }
15
16 - (void)writeIOSCode {
17 NSLog(@"write iOS code");
18 }
19 @end
三、协议的应用与功能
a.应用
1.(主要功能)规范接口(协议规范接口是强制的)
2. 实现委托代理机制(实现对象之间的通信) 代理设计模式
b.功能
- 协议就是为了满足统一的数据传输
- 一个类只能继承一个直接的父类,但可以实现多个接口(遵守多个协议),间接的实现了多继承.
用协议实现多继承 可定义多个协议 类遵守多个协议 实现协议中的方法 间接实现多继承
代码就不写了 很简单