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 }
main.m
1 #import <Foundation/Foundation.h> 2 // @protocol 协议的名字 <NSObject> 3 @protocol IOSProgrammerProtocol <NSObject> 4 @required // 必须要实现的方法 默认 不实现会有警告 5 - (void)writeIOSCode; 6 @optional // 可选的方法 可以实现也可以不实现 7 - (void)playTaiji; 8 @end
IOSProgrammerProtocol.h
1 #import <Foundation/Foundation.h> 2 #import "IOSProgrammerProtocol.h" 3 @interface JavaCodingMonkey : NSObject<IOSProgrammerProtocol> 4 - (void)writeJavaCode; 5 @end
JavaCodingMonkey.h
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
JavaCodingMonkey.m
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
IOSProgrammer.h
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
iOSProgrammer.m
三、协议的应用与功能
a.应用
1.(主要功能)规范接口(协议规范接口是强制的)
2. 实现委托代理机制(实现对象之间的通信) 代理设计模式
b.功能
- 协议就是为了满足统一的数据传输
- 一个类只能继承一个直接的父类,但可以实现多个接口(遵守多个协议),间接的实现了多继承.
用协议实现多继承 可定义多个协议 类遵守多个协议 实现协议中的方法 间接实现多继承
代码就不写了 很简单
时间: 2024-08-08 04:31:59