/// 如果一个类遵守了协议,那么这个类的实例对象也就遵守了协议,具备了协议中的行为
// 协议规范了IosProgrammer类的行为
// 一旦遵守这个协议,协议中的方法就不需要声明,直接实现
@protocol IosCoderProtocol <NSObject>
// @protocol 协议名字 @protocol NSObject // 基协议
// 自定义的协议都要遵守 <NSObject>协议 基协议
// IosCoderProtocol 即为协议名字
//@required 必须实现 @optional选择实现
@optional
- (void)writeIosCode;
// 协议的内容,一旦一个类遵守协议,就要实现协议中的方法
@protocol CoderProtocol <NSObject>
// NSObject 实现了 <NSObjct>的方法
@required // 必须要实现的方法,默认是必须的
- (void)writeCode;
@optional // 可选的,遵循协议的类可以不实现这个方法
- (void)sing;
/// 继承和协议的关系
// 相同点:
/*
协议和继承都可以规范接口
a.协议功能就是规范接口(可以规范任何遵守协议的类)
b.多个子类继承父类之后,父类就可以规范一些方法,子类继承这些方法
*/
// 不同点
/*
协议:
a.协议中不可以声明变量,只能声明方法 (遵守协议的类实现方法)
b.一个类可以遵守多个协议,实现类似C++的多继承
继承:
a.继承中可以声明成员变量和方法,子类继承父类之后,子类会继承父类所拥有的成员变量和成员方法,子类可以不写父类的方法
b.oc的继承是一个单继承,没有多继承,一个类只能继承一个父类
*/
// 协议实现多继承
/*
现在有多个类,
第一个是加法器类
第二个是减法器类
第三个是乘法器类
在C++中可以通过多继承实现
但是oc中没有多继承,可以通过协议来实现
一个计算器类,遵循了三个协议,来完成三个功能,类似于多继承
*/
#import "AddProtocol.h"
#import "SubProtocol.h"
#import "MulProtocol.h"
// 如果想要具备加减乘功能,需要集成三个协议,分别实现协议里的方法
@interface Calculator : NSObject <
AddProtocol,
SubProtocol,
MulProtocol
>