协议和继承的关系

/// 如果一个类遵守了协议,那么这个类的实例对象也就遵守了协议,具备了协议中的行为


// 协议规范了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
    >




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值